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

最近做项目有一个点击按钮改变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动画结束回调
    }];

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,087评论 3 119
  • #幸福是需要修出来的~每天进步1%~幸福实修08班~13-罗洁-余姚# 20170706(18/99) 【幸福三朵...
    幸福实修08班罗洁阅读 1,544评论 2 3
  • 我那时简单粗暴的可怕,感情的得失竟然只会用金钱,路程,时间来衡量,我惧怕一切没有刻度的东西,没有刻度,不能...
    七虞阅读 2,361评论 0 1
  • 在火车站 乞丐徘徊在检票口的两旁 徘徊在广场的中央 在地铁站 乞丐用最使人厌恶的声音 循环着悲惨的音乐 说他来自荒...
    一百加一阅读 2,312评论 0 0
  • 有时候奋斗,挣扎,痛苦正是生活中必须的。就像蝴蝶的蜕变,必须经历痛苦的挣扎,撕开紧束的蚕茧,才能展翅高飞。 ...
    我是小黎阅读 1,414评论 0 0

友情链接更多精彩内容