前言:
使用masonry添加约束,各位都不陌生,但是有没有发现使用它布局UI时,加的动画没效果呢?俗话说没话说个图啊。。。。
正文
-
Scene one
代码如下:
[UIView animateWithDuration:.5 animations:^{
[self.sliderBlockView mas_updateConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(-100);
}];
}];
效果是下面这样的:
noAnimation.gif
-
Scene two
代码如下:
[self.sliderBlockView mas_updateConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(-100);
}];
[UIView animateWithDuration:.5 animations:^{
[self.sliderBlockView.superview layoutIfNeeded];
}];
效果是下面这样的:
haveAnimation.gif
原因:如果其约束还没有生成的时候需要动画的话,就请先强制刷新后才写动画,否则所有没生成的约束会直接跑动画。[self.sliderBlockView.superview layoutIfNeeded]这行代码相当于强制更新约束了。
结束语
若问:美丽的外表和有趣的灵魂你怎么做出选择?
我:选择都有的你!
网友评论