我想使代码中的uiview约束无效,以根据视图中的特定更改强制所有字段重新布局。
例如,假设我有两个给定固定VerticalSpace约束的UILabel。在某些用户事件中,我正在调整顶部的标签。我希望能够强制约束从代码中失效。
这是我第一次使用约束,我不明白我是如何从代码中做到这一点的。我知道当设备旋转时,UIViews上的约束无效。
答案 0 :(得分:5)
您在相关视图上调用setNeedsLayout
,通常是视图控制器的.view
。 :
[self.view setNeedsLayout];
您并没有真正使约束无效,这与用于自定义视图的略有不同,可能需要根据其他更改删除和重新计算约束。你正在做的是让视图知道它用于计算其布局的一些因素现在已经改变了。约束仍然有效,但结果已经改变。
要为新布局设置动画,可以在动画块中调用layoutIfNeeded
。