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

时间:2017-03-18 17:34:16

标签: ios uikit

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

1 个答案:

答案 0 :(得分:1)

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

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

示例:

如果错误地添加了两个类似的约束,并且如果您不知道它并仅保持对一个约束的引用,则在更改它的常量值时将导致其他约束中断。所以viewWillLayoutSubviews对我来说不是一个很好的应用Autolayout约束的地方:)如果你想出于某种原因不惜一切代价,请确保你不会最终添加重复约束。

  

或其他一些方法)?

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