UIView的animateWithDuration动画不执行问题

本文介绍了在部分场景中UIView动画不执行的问题,通过调用layoutIfNeeded()方法解决,并给出了一个使用动画和约束更新的完整示例,着重于登录状态下的键盘切换动画处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

部分场景,基本动画不执行:
[UIView animateWithDuration:animationDuration animations:^{ } completion:^(BOOL finished) { }];
其实想解决很简单,就是调用布局重新绘制函数:[self layoutIfNeeded];
具体的例子是:

        [_comTool setKeyBoardChangeBlock:^(CGFloat height, CGFloat animationDuration) {
            if (DYGlobleData.isLogin) {
                if(animationDuration <= 0)
                {
                    //防范式编程,理论不会出现
                    weakSelf.bgV.hidden = NO;
                }
                else
                {
                    weakSelf.bgV.hidden = (height<=0);
                    [UIView animateWithDuration:animationDuration animations:^{
                        if((height<=0))
                        {
                            [weakSelf.comTool mas_updateConstraints:^(MASConstraintMaker *make) {
                                make.height.mas_equalTo(BaseSize(100));
                                make.width.mas_equalTo(KScreenW);
                                make.bottom.mas_equalTo(BaseSize(100) -(49+(BR_BOTTOM_MARGIN?24:0)));
                            }];
                            [weakSelf.comTool updateCommentTVWithShift:(BaseSize(100) -(49+(BR_BOTTOM_MARGIN?24:0))+(BR_BOTTOM_MARGIN?24:0))];
                        }
                        else
                        {
                            [weakSelf.comTool mas_updateConstraints:^(MASConstraintMaker *make) {
                                make.height.mas_equalTo(BaseSize(100));
                                make.width.mas_equalTo(KScreenW);
                                make.bottom.mas_equalTo(-height);
                            }];
                            [weakSelf.comTool updateCommentTVWithShift:0];
                        }
                        [weakSelf layoutIfNeeded];
                    } completion:^(BOOL finished) {
                    }];
                }
            } else {
                weakSelf.bgV.hidden = YES;
                [weakSelf.comTool mas_updateConstraints:^(MASConstraintMaker *make) {
                    make.height.mas_equalTo(BaseSize(100));
                    make.width.mas_equalTo(KScreenW);
                    make.bottom.mas_equalTo(BaseSize(100) -(49+(BR_BOTTOM_MARGIN?24:0)));
                }];
                [weakSelf.comTool updateCommentTVWithShift:(BaseSize(100) -(49+(BR_BOTTOM_MARGIN?24:0))+(BR_BOTTOM_MARGIN?24:0))];
            };
        }];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值