iOS 7不会调用layoutSubviews

Wan*_*ang 1 objective-c ios ios6 ios7

我正在将iOS 6应用程序转换为iOS 7并遇到一些问题.

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

我的类继承自UIAlertView.

例如:

- (void)layoutSubviews{
    [super layoutSubviews];
rezise the frame for the tableview
}
Run Code Online (Sandbox Code Playgroud)

在iOS 7中,此函数不再被调用,导致我的tableview没有调整大小(框架粘在CGrectZero).

还有一些方法不再被执行了.

我需要使用其他方法吗?

Sco*_*ets 5

UIAlertView视图层次结构是私有的,不应该被修改,也不应该UIAlertView被子类化.在iOS 6中,你已经远离它,但不再在iOS 7中了.看看SDCAlertView.我写它来替换UIAlertView,保持外观和行为相同但功能更多.

编辑:

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

您可以自己检查所有这些,并通过一些讨厌的黑客攻击,您可以通过这种方式修改视图层次结构.但是,这绝对不推荐,因为它可能随时中断,即使使用7.xy更新也是如此.