美文网首页
在使用Masonry来做页面布局的情况下添加动画效果

在使用Masonry来做页面布局的情况下添加动画效果

作者: HarlanHuang | 来源:发表于2018-04-22 10:23 被阅读242次

    之前在写代码的时候发现使用了Masonry来做页面布局的情况下,通过UIView的animateWithDuration 方法来添加动画是不会有效果的,那么应该如何实现动画效果呢?

    比如在点击某个按钮的时候需要更新约束,那么可以执行下面的方法:

    - (void)updateLayout {
        // 告诉当前的页面需要更新约束
        [self.view setNeedsUpdateConstraints];
        // 添加动画效果,3s执行完毕
        [UIView animateWithDuration:3 animations:^{
            // 更新约束
            if (self.accountTextField.isShowKeyboard) {
                [self.titleImage mas_updateConstraints:^(MASConstraintMaker *make) {
                    make.height.mas_equalTo(0.f);
                }];
                
                [self.accountTextField mas_updateConstraints:^(MASConstraintMaker *make) {
                    make.top.equalTo(self.view.mas_top).with.offset(SCREEN_SIZE_HEIGHT * 0.198);
                }];
            } else {
                CGFloat scale = iPad ? 1.5f : 1.f;
                [self.titleImage mas_updateConstraints:^(MASConstraintMaker *make) {
                    make.height.mas_equalTo(65.f * scale);
                }];
                
                [self.accountTextField mas_updateConstraints:^(MASConstraintMaker *make) {
                    make.top.equalTo(self.view.mas_top).with.offset(SCREEN_SIZE_HEIGHT * 0.35);
                }];
            }
            // 告知发生变化的视图的父视图需要重新绘制
            [self.titleImage.superview layoutIfNeeded];
            [self.accountTextField.superview layoutIfNeeded];
        }];
    }
    

    相关文章

      网友评论

          本文标题:在使用Masonry来做页面布局的情况下添加动画效果

          本文链接:https://www.haomeiwen.com/subject/eimqlftx.html