iOS 分析UITableView使用MJRefresh上拉加载出现列表位置偏移的问题。

最近在做一个项目,有四个模块,每一个模块都是tableView列表,使用MJRefresh上拉刷新的时候会出现位置偏移的问题。

问题:

第一个模块:
tableView列表中有多种cell,并且不同cell的高度也不同,有个别cell存在自适应高度。
在iOS10设备上出现上拉刷新位置偏移的问题。
在iOS11设备上没有出现偏移的问题。

第二个模块:
只有一种cell,高度固定。
在iOS10设备上没有出现偏移的问题。
在iOS11设备上出现上拉刷新位置偏移的问题。

第三个模块:
和第二个模块相同。

第四个模块:
tableView列表中有多种cell,并且不同cell的高度也不同,每个cell都是固定高度。
在iOS10设备上没有出现偏移的问题。
在iOS11设备上出现上拉刷新位置偏移的问题。

分析:

_tableView.estimatedRowHeight = 44.0;

存在自适应高度的cell(第一个模块),有该行代码,在iOS10 上出现问题,在iOS11上没有出现问题。

没有自适高度的cell(其他三个模块),没有该行代码,在iOS10上没有出现问题,在iOS11上出现问题。

测试:

在四个模块中都编写上该行代码,并且预估高度都给显示cell的高度。
iOS10出现问题的模块:第一个和第四个模块。
iOS11出现问题的模块:第四个模块。
出现问题的原因:给出的预估高度是最低的cell显示的高度。

在四个模块中都编写上该行代码,并且预估高度都给显示cell的最大的高度。
问题没有出现。

总结:

综上所述,以上都是废话,下文才是正解。
在tableView中加上代码:

_tableView.estimatedRowHeight = (出现的cell中,最高的cell高度);

PS:不知道这样解释对不对,如有更好的见解,请多多指教。

你可能感兴趣的:(iOS 分析UITableView使用MJRefresh上拉加载出现列表位置偏移的问题。)