iOS11 TableView reloadData 后出现contentSize计算不准确的情况

原因:

在iOS 11中默认启用Self-Sizing

而在开启Self-Sizing之后,TableView会使用estimateRowHeight属性,就会造成contentSize和contentOffset值的变化。
因为不会缓存正确的行高,在TableView reloadData的时候,就会重新计算contentSize,从而引起contentOffset的变化。

解决:

知道了原因之后,问题就好解决了,只需要关闭这个功能就行了。

  [UITableView appearance].estimatedRowHeight = 0;
  [UITableView appearance].estimatedSectionFooterHeight = 0;
  [UITableView appearance].estimatedSectionHeaderHeight = 0;

注意三个属性都需要设置,即使你没用到sectionHeader或者sectionFooter也要设置!!!
注意三个属性都需要设置,即使你没用到sectionHeader或者sectionFooter也要设置!!!
注意三个属性都需要设置,即使你没用到sectionHeader或者sectionFooter也要设置!!!

重要的事情说三遍。

你可能感兴趣的:(iOS11 TableView reloadData 后出现contentSize计算不准确的情况)