何时以及为什么要调用updateConstraints?

时间:2016-07-20 06:45:38

标签: ios autolayout uikit

何时以及为什么要调用updateConstraints?当覆盖时,在覆盖中要做什么样的工作?

我已经阅读并观看了很多关于自动布局如何工作的信息,但我似乎无法完全绕过它。

您是否更新了保存引用的任何特殊兴趣约束的常量,或者进行自定义是否从视图中删除所有约束并完全重新创建它们,就像一个人在WWDC视频中所做的那样?

1 个答案:

答案 0 :(得分:0)

对此事有一些想法:

https://oleb.net/blog/2015/08/how-to-use-updateconstraints/

当然,在WWDC视频中偶尔会有关于此主题的信息。

但是总的来说,答案可能是:不要覆盖updateConstraints。在通常情况下,它很少被调用,因此仅当您还调用setNeedsUpdateConstraints时,才需要覆盖它,结果可能是不必要的混乱和复杂的体系结构。通常不需要updateConstraints覆盖。 WWDC 2018有关自动布局的视频显示,此类覆盖经常被错误地编写,只会导致一堆效率极低的布局“混乱”。如果您需要更改约束,只需在需要更改的时候更改它们。

文档现在说:

  

在发生影响性更改之后,几乎总是更干净,更容易立即更新约束。例如,如果您想响应按钮的点击来更改约束,请直接在按钮的操作方法中进行更改。   仅当在适当位置更改约束太慢或视图产生大量冗余更改时,才应覆盖 this 方法。

最后一句话指的是一种非常罕见的情况,无论如何您都不大可能知道如何正确实施updateConstraints以提高效率。所以不要。