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;
    }
}

你可能感兴趣的:(iOS踩过的坑之使用Masonry做动画)