最近在项目中遇到一个关于
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 |
|