masonry 使用 UIView 的动画

masonry 使用 UIView 的动画 在创建一个 view 的时候,给这个 view 一个从下弹出的动画,以前使用 frame 做布局的时候,很简单的就用 UIViewAnimation 就做出来了,可是现在APP 布局用的是 masonry,直接在设置好初始 layout 后就更新,发现并没有动画,而是直接就显示了出来,后来发现是需要 view 先更新第一次的约束,动画执行后在执行一个更新约束才能出现动画 代码如下(项目中的代码,没有做整理,理解理解思路就行):

- (GoodDetailSelectNumView *)selectNumView {
    if (!_selectNumView) {
        _selectNumView = [[GoodDetailSelectNumView alloc] init];
        [self.view addSubview:_selectNumView];
        [_selectNumView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.bottom.mas_equalTo(150);
            make.width.equalTo(self.view);
            make.height.mas_equalTo(150);
        }];
        // 注意需要先执行一次更新约束
        [self.view layoutIfNeeded];
        
        __weak typeof(self) weakSelf = self;
        _selectNumView.exitSelectNum = ^{
            [weakSelf removeSelectView];
        };
        [UIView animateWithDuration:0.3 animations:^{
            [_selectNumView mas_updateConstraints:^(MASConstraintMaker *make) {
                make.bottom.mas_equalTo(-50);
            }];
            // 注意需要再执行一次更新约束
            [self.view layoutIfNeeded];
        }];
    }
    return _selectNumView;
}
复制代码

- (void)removeSelectView {
    [UIView animateWithDuration:0.3 animations:^{
        [_selectNumView mas_updateConstraints:^(MASConstraintMaker *make) {
            make.bottom.mas_equalTo(150);
        }];
        [self.view layoutIfNeeded];
    } completion:^(BOOL finished) {
        [_selectNumView removeFromSuperview];
        _selectNumView = nil;
    }];
}
复制代码

转载于:https://juejin.im/post/5a93c9455188257a5e576adf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值