iOS踩过的坑之使用Masonry做动画

动画问题,和普通的方法实现差不多,重点只是修改约束后调用

[view.superview layoutIfNeeded];

而已

[view mas_makeConstraints:^(MASConstraintMaker *make) {

  make.top.mas_equalTo(400);

  make.left.mas_equalTo(100);

  make.size.mas_equalTo(CGSizeMake(100, 100));

}];

[view.superview layoutIfNeeded];
//如果其约束还没有生成的时候需要动画的话,就请先强制刷新后才写动画,否则所有没生成的约束会直接跑动画

[UIView animateWithDuration:3 animations:^{

  [view mas_updateConstraints:^(MASConstraintMaker *make) {

      make.left.mas_equalTo(200);

}];

[view.superview layoutIfNeeded];//强制绘制


注意此处一定是改变约束的父视图调用layoutIfNeeded函数

- (void)tapTeacherVideoView {
    if (self.isTeacherSplitScreen) {
        [self.studentVideoView removeFromSuperview];
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:.5f];
        [self.teacherVideoView mas_updateConstraints:^(MASConstraintMaker *make) {
            make.width.leading.equalTo(self.view);
        }];
        [self.view layoutIfNeeded];
        [UIView commitAnimations];
        self.teacherSplitScreen = NO;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容