在UIViewController中,我应该在viewDidLoad或viewWillLayoutSubviews(或其他一些方法)中创建手动自动布局约束吗?
答案 0 :(得分:1)
如果您希望您的约束只设置一次并期望它在整个VC生命周期中出现,请在ViewDidLoad
中创建它。
我从未遇到过必须在viewWillLayoutSubviews
中创建/应用约束的场景,因为viewWillLayoutSubviews
在VC的生命周期中被多次调用,粗心的代码可能导致相同的自动布局多次应用约束,如果您尝试稍后在某个时刻更新约束的常量值,这将是灾难的完美配方。
示例:
如果错误地添加了两个类似的约束,并且如果您不知道它并仅保持对一个约束的引用,则在更改它的常量值时将导致其他约束中断。所以viewWillLayoutSubviews对我来说不是一个很好的应用Autolayout约束的地方:)如果你想出于某种原因不惜一切代价,请确保你不会最终添加重复约束。
或其他一些方法)?
这完全取决于您的要求,假设您希望仅在某些情况下应用某些约束,在这种情况下,您可以选择在需要时创建和应用约束,或者您可以在viewDidLoad
中创建所有约束然后根据需要激活和停用这些约束。