取消约束或更改优先级的最佳方法是什么?

时间:2018-10-12 00:59:36

标签: ios animation autolayout anchor

我不太了解自动布局。由于我正在尝试使用某些UIElement制作多个动画,因此我是否需要停用/激活约束,还是应该使用锚点的优先级?

1 个答案:

答案 0 :(得分:0)

您可以观看WWDC video about Auto Layout tech。自动布局的核心是Linear Programming。它使用constraint solver解决了这些线性问题。

作为WiKi中的图片,这些自动布局规则与Problem constraints相同,并且只有全局最优值才能解决这些约束。如果没有解决这些约束的全局最优方法,那么这些规则就会发生冲突。

WiKi image


从WWDC视频中,我学会了通过禁用A组然后激活B组来定义约束组以实现动画。有时我喜欢修改约束的属性以实现动画效果。如果这种方法使我的代码简洁易懂,那么我会采用这种方法。

属性:isActive

Apple official document

可以将自动布局约束从@IBOutletxib绑定到storyboardNSLayoutConstraint有一个名为isActive的属性。您可以定义约束组。但是在您激活/停用约束之前,请始终先执行停用。为了避免冲突的约束。我是从WWDC视频中获得的。

属性:常数,乘数

您可以在运行时更改约束的multiplierconstant。更新约束的属性后,调用UIView的{​​{3}}和setNeedsupdateConstraints以应用这些更改。