OC: UITableView 使用 reloadSections:withRowAnimation: 时会跳动的问题

尤其是在UITableViewCell中放入UITextView输入文字动态刷新Cell高度的时候,会跳动的问题, 以及在使用reloadSections去刷新tableView的某个section的时候
不同系统下可能表现的不一样, 尤其我实在iPad 11.4的发现的问题, 而iPhone的11.4就没问题. 很奇怪 , 所有尝试了各种方法去解决
下面是尝试过的方法...

    // 1
    [self.tableView beginUpdates];
    [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
    [self.tableView endUpdates];
    
    // 2
    [UIView performWithoutAnimation:^{
        [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
    }];
    
    // 3
    [self.tableView performBatchUpdates:^{
        [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
    } completion:^(BOOL finished) {}];
    
    // 4
    [self.tableView beginUpdates];
    [self.tableView performBatchUpdates:^{
        [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
    } completion:^(BOOL finished) {}];
    [self.tableView endUpdates];

然后在网上看到了这个方法:
iOS11默认开启Self-Sizing 如果你没用到预估高度 那么你尝试在Appdelegate.m中的didFinishLaunchingWithOptions方法中,加上如下代码,看看是否有效
也可以放在UITableView的初始化或者懒加载中

if (@available(iOS 11.0, *)) {
        UITableView.appearance.estimatedRowHeight = 0;
        UITableView.appearance.estimatedSectionFooterHeight = 0;
        UITableView.appearance.estimatedSectionHeaderHeight = 0;
}

因为tableviewloadreload,是先根据预估行高做一个轮廓的搭建,再把自定义的数据填充进去做高度的微调。所以假如不做预先的设置,默认是根据UITableViewAutomaticDimension做预估行高的(好像是44),这样的渲染导致了界面抖动,甚至到时scrollView上移或下移。

因此需要在init方法中设置 预估行高,
并尽量确保 预估行高 和heightForRowAtIndexPathheightForHeaderInSectionheightForFooterInSection中返回值保持一致。
这样做的好处是去除渲染时的界面抖动,同时提高界面渲染的性能。

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

相关阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,100评论 8 265
  • 一、简介 <<UITableView(或简单地说,表视图)的一个实例是用于显示和编辑分层列出的信息的一种手段 <<...
    无邪8阅读 10,914评论 3 3
  • 每个人都是一座孤岛, 世界上从没有感同身受, 针不刺到他们身上, 他们永远不会觉得有多痛。 你万箭穿心,溃不成军,...
    二白啊阅读 123评论 0 0
  • 前言: 今年在新公司接触到了微服务和RPC的概念。我想从我着手的项目,再到公司的技术架构谈一谈我对微服务的理解。 ...
    祥哥去哪里阅读 4,030评论 0 2
  • 2018-5-3 1.早上醒来,精神状态很好,感恩一夜的睡眠,让我身体得以恢复。谢谢,谢谢,谢谢! 2.听了23课...
    道和与文淑阅读 233评论 0 0

友情链接更多精彩内容