iOS 7 不调用 layoutSubviews

标签 ios objective-c ios6 ios7

我正在将我的 iOS 6 应用程序转换到 iOS 7 并且遇到了一些问题。

在 iOS 6 中,将调用不再调用的方法。

我的类继承自 UIAlertView。

例如:

- (void)layoutSubviews{
    [super layoutSubviews];
rezise the frame for the tableview
}

在 iOS 7 中,这个函数不再被调用,导致我的 tableview 没有调整大小(框架停留在 CGrectZero)。

还有一些不再执行的方法。

我需要使用其他方法吗?

最佳答案

UIAlertView的 View 层次结构是私有(private)的,不应修改,UIAlertView 也不应修改。被子类化。在 iOS 6 中,你侥幸逃脱,但在 iOS 7 中不再。看SDCAlertView .我写它来替换 UIAlertView ,保持外观和行为相同,但功能更多。

编辑 :

没有调用任何布局方法的确切原因是因为 UIAlertView永远不会添加到 View 层次结构中。当您调用 -[UIAlertView show] ,创建一个单独的窗口并使其处于事件状态,其 View 层次结构(可能由 UIAlertView 定义)包含警报的所有不同元素。其中一些元素也用于其他模态上下文,例如弹出框、操作表、iPad 上的表单模态表等。

您可以自己检查所有这些,并且通过一些讨厌的黑客攻击,您可以通过这种方式修改 View 层次结构。但是,绝对不建议这样做,因为它可能随时中断,即使是 7.x.y 更新。

关于iOS 7 不调用 layoutSubviews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21189038/

相关文章:

当从链接安装应用程序时,iOS 应用程序传递特定的 ID

ios - 尝试 Seque 到导航 View Controller 时出错无法将类型 'UIViewController' 的值转换为强制类型 'UINavigationController'

ios - ComponentKit 如何推送 View Controller CKComponentController

objective-c - 为什么我必须创建一个对象并将其分配给 Objective C 中的属性?

ios - 无法对非字符串的内容执行子字符串操作

ios6 - 在 iOS 6 和 7 中验证购买收据

ios - 关于自定义 TabBarViewController

ios - CLLocationManagerDelegate 没有捕获事件

ios - 使实例化的 NSTimers 无效

objective-c - 在 iOS 中使用 Twitter 登录用户...使用什么?