概述
使用 UIView 起动画,通过 Masonry 设置的约束
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;
发现了两个问题
- 并没有动画效果
- Masonry 报问题:约束有冲突
原因
经过观察代码发现
- UIView 在使用 Masonry 设置约束时,当起动画时,需要在 animations Block 中调用
[self layoutIfNeeded]
刷新 superView - 在 UIView animation 中需要使用 Masonry
mas_remakeConstraints
更新约束,否则就会报 “约束冲突”的问题,因为 mas_makeConstraints 只负责新增约束,不能同时存在两条针对于同一对象的约束
其他
mas_updateConstraints
与 mas_remakeConstraints
的区别
- update 会更新约束,如果出现有相同的约束方法,只是值不同,则会直接使用新的约束
- remake 会清除掉之前的约束,重新设置约束