美文网首页
iOS 解决tableViewCell做动画与刷新cell冲突的

iOS 解决tableViewCell做动画与刷新cell冲突的

作者: 三千沉浮 | 来源:发表于2018-10-31 11:04 被阅读0次

最近做项目有一个点击按钮改变cell高度的需求,心想简单

[self.tableView beginUpdates];
 [self.tableView endUpdates];
[self.tableView reloadData];

这就完事儿了,然而一运行秒被打脸,因为reload方法会覆盖掉动画效果!这坑爹玩意儿。。。

查了一下资料,原来beginUpdates本质上就是添加了一个动画事务,即CATransaction,当然这个事务可能包含许多操作,比如会重新调整每个cell的高度(但是默认不会重新加载cell---划重点),所以才需要执行坑爹的reload啊!如果仅仅是改变高度,上面的前两句代码就够用了,下面把还需要重新加载cell的动画代码给大家贴一下

//设置动画执行时间
    [UIView animateWithDuration:0.15f delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
        //监听tableview动画执行结束时间
        [CATransaction begin];
        [CATransaction setCompletionBlock:^{
            //tableview动画结束回调
            [weakSelf.tableView reloadData];
        }];
        [weakSelf.tableView beginUpdates];
        [weakSelf.tableView endUpdates];
        [CATransaction commit];
    }completion:^(BOOL finished) {
    //UIView动画结束回调
    }];

基本上就是这个逻辑,如有问题,欢迎交流~

相关文章

网友评论

      本文标题:iOS 解决tableViewCell做动画与刷新cell冲突的

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