UITableView reloadData 跳动闪动

问题

在使用表格TableView的时候,常常需要 根据数据更新表格,最常用的方式就是reloadData

一般情况下是没有什么问题的,有时候会遇到cell或者section跳动,产品大大肯定是要打死你的。

原因

(转自 曾经像素有点低)

因为iOS 11后系统默认开启Self-Sizing;
Self-Sizing——官方文档是这样解释的:大概就是说我们不用再自己去计算cell的高度了,只要设置好这两个属性,约束好布局,系统会自动计算好cell的高度。e

IOS11以后,Self-Sizing默认开启,包括Headers, footers。如果项目中没使用estimatedRowHeight属性,在IOS11下会有奇奇怪怪的现象,因为IOS11之前,estimatedRowHeight默认为0,Self-Sizing自动打开后,contentSize和contentOffset都可能发生改变。

 

解决

1.适用于手动计算cell高度

 self.tableView.estimatedRowHeight = 0;
 self.tableView.estimatedSectionHeaderHeight = 0;
 self.tableView.estimatedSectionFooterHeight = 0;

2.适用于自动布局

在reloadData之前使用 endupdate()方法即可

tableView.endUpdates();
tableView.reloadData();

 

你可能感兴趣的:(iOS,移动开发,iOS,开发问题踩坑)