解决iOS11下UITableView执行reloadData刷新页面的时候出现页面跳动的问题

iOS11下UITableView执行reloadData刷新页面的时候出现页面跳动的问题或者执行动画的时候出现了动画异常。而在其他版本中都不会出现这些问题,查了最新的文档,得到了以下的解决方案,提供出来给大家参考:


原因:

在iOS 11中默认启用Self-Sizing。

开启Self-Sizing之后,tableView是使用estimateRowHeight属性的,这样就会造成contentSize和contentOffset值的变化,如果是有动画是观察这两个属性的变化进行的,就会造成动画的异常,因为在估算行高机制下,contentSize的值是一点点地变化更新的,所有cell显示完后才是最终的contentSize值。因为不会缓存正确的行高,tableView reloadData的时候,会重新计算contentSize,就有可能会引起contentOffset的变化。


解决:

iOS11下不想使用Self-Sizing的话,可以通过以下方式关闭:(前言中提到的问题也是通过这种方式解决的)

self.tableView.estimatedRowHeight =0;

self.tableView.estimatedSectionHeaderHeight =0;

self.tableView.estimatedSectionFooterHeight =0;

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

相关阅读更多精彩内容

友情链接更多精彩内容