iOS 7不会调用layoutSubviews

时间:2014-01-17 15:03:35

标签: 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处粘贴)。

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

我需要使用其他方法吗?

1 个答案:

答案 0 :(得分:5)

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

修改

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

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