更改约束常量后是否需要setNeedsLayout或layoutIfNeeded?

时间:2015-03-06 20:13:38

标签: ios autolayout constraints

在iOS上,是否有必要在以编程方式更改约束的常量后进行任何API调用(例如setNeedsLayoutlayoutIfNeeded)?在我的用例中,我对动画变化不感兴趣。我相信有一些错误(例如:this one),调用这些函数是一种解决方法。但除了那个边缘情况,我还没有必要在我的代码中调用它们。这恰好是偶然发生的,还是有一个明确的来源提到在更改约束常数时要做什么?

一些SO答案(herehere)表示设置常量应该足够了,但没有任何支持参考。

除了animation block之外,Apple的iOS自动布局指南并未提及任何相关信息。 Cocoa Auto Layout Release Notes确实说除非您在自定义视图中覆盖setNeedsLayout,否则无需调用layout。但是,该文件似乎特定于OSX。

2 个答案:

答案 0 :(得分:0)

如果想立即获得正确的视图,您应该手动调用这些API。 (例如,获取动画开始/结束帧)或者我们不需要手动调用这些API。

我使用MASConstraint框架,我从不称这些API。

我不确定在添加/删除约束但是不更新约束时是否有必要。 :(

答案 1 :(得分:-1)

是的,在更改布局约束的setNeedsLayout之后,有必要调用constant,因为此更改本身并不算作布局的无效。

相关问题