Autolayout约束随大小类更新

时间:2016-04-04 07:30:35

标签: ios layout autolayout constraints size-classes

我知道,如何使用大小类完美地创建自动布局约束。

但我没有收到何时致电layOutIfNeeded()setNeedsDisplay()layOutSubViews()setUpdateConstraints()

有人可以告诉如何在约束更改后正确调用此函数来更新UI。

另一个问题是,何时只调用上面的单个函数并使用其他函数调用。

1 个答案:

答案 0 :(得分:0)

必须非常清楚,您的布局是由在运行时的特定时间调用的例程计算的 您可能需要修改当前布局,例如更改特定约束的constant。如果您这样做,您会注意到UI中没有任何变化,这是因为该例程仍未被调用 您可以做的是强制调用布局例程,并通过以下两种方法执行此操作:

  • setNeedsLayout:您告诉视图需要布局。下次调用例程时,知道此视图需要进行布局刷新
  • layOutIfNeeded():您不想等待下一个电话,而是告诉系统尽快强制进行布局计算

同样的事情发生在setNeedsDisplay()displayIfNeeded()上,第一个告诉你需要再次渲染一个视图,而第二个告诉你要尽快完成。
如果你问自己为什么,原因就是表现。每次重新渲染一切都没用,这种懒惰的方法将节省系统资源 方法- setNeedsUpdateConstraints-updateConstraintsIfNeeded基本上是应用于约束的相同概念,不同之处在于,在强制布局之前,您不会看到UI中的任何更改,为什么这些方法有用?因为有时你需要在约束更改后进行检查,如果布局仍然有效而不改变UI的方面。