将我的项目升级到 iOS 6 后,我意识到自动布局仅在 viewDidAppear 中有效,并且我的大部分代码都希望 View 的框架在 viewDidLoad 中可用。这个限制使非常好的自动布局功能对我来说几乎毫无用处。有什么建议可以帮助我使用自动布局吗?
例如,有时开发人员需要根据自动布局选择放置特定 subview 的位置来调整有关 subview 的信息。在用户已经看到 subview 之前,开发人员无法确定它的最终位置。用户不应看到这些信息调整,而是一次性呈现最终结果。
更具体地说:如果我想根据自动布局放置 View 的位置更改 View 中的图像怎么办?我无法查询该位置,然后在没有用户看到的情况下更改图像。
最佳答案
作为一般规则,在 viewDidLoad
中永远不应依赖 View 框架/边界。
只有在以编程方式或通过 .nib/.xib 文件创建 View 后,才会调用 viewDidLoad
方法。此时, View 还没有设置,只是加载到内存中。
您应该始终在viewWillAppear
或viewDidAppear
中进行 View 布局,因为一旦 View 准备好呈现,就会调用这些方法。
作为测试,如果您只是在 viewDidLoad
和 viewWillAppear
方法,您会看到只有后一种方法返回实际 View 大小与围绕 View 的任何其他元素(例如 UINavigationBar
和 UITabBar
).
关于objective-c - Xcode 的自动布局仅在 viewDidAppear 中有效,这是非常有问题的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13179462/