在iOS上,是否有必要在以编程方式更改约束的常量后进行任何API调用(例如setNeedsLayout
或layoutIfNeeded
)?在我的用例中,我对动画变化不感兴趣。我相信有一些错误(例如:this one),调用这些函数是一种解决方法。但除了那个边缘情况,我还没有必要在我的代码中调用它们。这恰好是偶然发生的,还是有一个明确的来源提到在更改约束常数时要做什么?
一些SO答案(here和here)表示设置常量应该足够了,但没有任何支持参考。
除了animation block之外,Apple的iOS自动布局指南并未提及任何相关信息。 Cocoa Auto Layout Release Notes确实说除非您在自定义视图中覆盖setNeedsLayout
,否则无需调用layout
。但是,该文件似乎特定于OSX。
答案 0 :(得分:0)
如果想立即获得正确的视图,您应该手动调用这些API。 (例如,获取动画开始/结束帧)或者我们不需要手动调用这些API。
我使用MASConstraint框架,我从不称这些API。
我不确定在添加/删除约束但是不更新约束时是否有必要。 :(
答案 1 :(得分:-1)
是的,在更改布局约束的setNeedsLayout
之后,有必要调用constant
,因为此更改本身并不算作布局的无效。