我正在将我的 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/