美文网首页
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