最近在项目中遇到一个关于
AutoLayout与UIView Animation约束的问题。
Storyboard中, 界面布局采用了AutoLayout, 界面背景用2个UIImageView切换不同的UIImage, 通过UIView Animation来实现一个无限循环的动画效果,图层上面还有UILabel等控件。
当我在界面上修改UILabel的Font属性的时候, 发现背景动画发生了变化。
动画受影响主要问题如下:
1 2 3 4 | |
其中用到了self.view.layoutIfNeeded()这个方法。
修改UILabel的Font属性的时候, 其实self.view也做了layout的处理, 这时候UIView Animation中也同时用到了self.view.layoutIfNeeded(), 造成了错乱的效果。
开始我在代码中用了
self.view.setTranslatesAutoresizingMaskIntoConstraints(false)
结果发现进入这个界面的时候就出现来错乱, 所以肯定不能直接来手动限制self.view的约束。
解决办法:
将2个UIImageView不直接放在self.view上, 而是新添加一个UIView来放它们(比如这个View是self.animationView), 主要它们的superView不直接是self.view。这样就不会在更新Font属性的时候, UIView Animation受到影响。
代码部分修改成如下:
1 2 3 4 | |