ios - 在 UIViewController 中,我应该在 viewDidLoad 或 viewWillLayoutSubviews 中创建手动自动布局约束吗?

标签 ios uikit

在 UIViewController 中,我应该在 viewDidLoad 或 viewWillLayoutSubviews (或其他一些方法)中创建手动自动布局约束吗?

最佳答案

如果您希望您的约束只设置一次并希望它在整个 VC 生命周期中都存在,请在 ViewDidLoad 中创建它。

我从来没有遇到过这样的场景,你必须在 viewWillLayoutSubviews 中创建/应用约束,因为 viewWillLayoutSubviews 在 VC 和粗心代码的生命周期中被多次调用可能会导致多次应用相同的自动布局约束,如果您稍后尝试更新约束的常量值,这将是灾难的完美处方。

示例:

如果错误地添加了两个类似的约束,并且如果您没有意识到这一点并且仅保留对一个约束的引用,则更改它的常量值将导致其他约束失效。所以 viewWillLayoutSubviews 对我来说不是一个应用自动布局约束的好地方 :) 如果你出于某些原因想要不惜一切代价,确保你不会最终添加重复的约束。

or some other methods)?

这完全取决于您的要求,假设您希望仅在特定情况下应用某些约束,在这种情况下,您可以选择在需要时创建和应用约束,或者您可以在 viewDidLoad< 中创建所有约束 然后根据您的需要激活和停用这些限制。

关于ios - 在 UIViewController 中,我应该在 viewDidLoad 或 viewWillLayoutSubviews 中创建手动自动布局约束吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42877635/

相关文章:

iPhone SDK - 大 UITableViewCell

ios - 多个具有 .round lineCap 的 CAShapeLayers 相互重叠

objective-c - 在 UITableView 中禁用删除 1 个单元格

ios - 需要帮助了解自定义 uitableviewcell 初始化

ios - UIWebview全屏尺寸

ios - 如何将文本字段键盘更改为仅阿拉伯数字? Swift/UIKit

firebase - 与守护程序的连接无效

ios - 关于正确实现的架构 MVVM 问题

iphone - ABPeoplePickerNavigationControllerDelegate:shouldContinueAfterSelectingPerson提供带有电子邮件地址的错误ABMultiValue ID

ios - 字典 [字符串 : String] keys order changed when converted to array swift