objective-c - Xcode 的自动布局仅在 viewDidAppear 中有效,这是非常有问题的

标签 objective-c ios xcode

将我的项目升级到 iOS 6 后,我意识到自动布局仅在 viewDidAppear 中有效,并且我的大部分代码都希望 View 的框架在 viewDidLoad 中可用。这个限制使非常好的自动布局功能对我来说几乎毫无用处。有什么建议可以帮助我使用自动布局吗?

例如,有时开发人员需要根据自动布局选择放置特定 subview 的位置来调整有关 subview 的信息。在用户已经看到 subview 之前,开发人员无法确定它的最终位置。用户不应看到这些信息调整,而是一次性呈现最终结果。

更具体地说:如果我想根据自动布局放置 View 的位置更改 View 中的图像怎么办?我无法查询该位置,然后在没有用户看到的情况下更改图像。

最佳答案

作为一般规则,在 viewDidLoad 中永远不应依赖 View 框架/边界。

只有在以编程方式或通过 .nib/.xib 文件创建 View 后,才会调用 viewDidLoad 方法。此时, View 还没有设置,只是加载到内存中。

您应该始终viewWillAppearviewDidAppear 中进行 View 布局,因为一旦 View 准备好呈现,就会调用这些方法。

作为测试,如果您只是在 viewDidLoadviewWillAppear 方法,您会看到只有后一种方法返回实际 View 大小与围绕 View 的任何其他元素(例如 UINavigationBarUITabBar).

关于objective-c - Xcode 的自动布局仅在 viewDidAppear 中有效,这是非常有问题的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13179462/

相关文章:

ios - 从带有方向的 ios 应用程序打开苹果 map 应用程序

ios - 优化核心数据/魔法记录 - findFirstByAttribute - 核心数据

ios - 为什么我不能创建 NSLayoutConstraint 类型的数组?

ios - 如何修复 Xcode 中的 undefined symbol 错误?

iphone - 如何制作漂亮的iOS界面?

ios - 是否可以从 Swift 中的 UITextView 元素的光标位置获取索引(String.Index)值?

objective-c - WebView 实现中未加载浏览器插件

ios - UITableViewCell - 如何获取指向重新排序控件的指针?

ios - Xcode7中如何在没有Apple Developer Program的情况下创建ipa

ios - 核心数据按月和总和分组