TableView 刷新后调用 reloadData 出现上移
2018-08-27 本文已影响552人
自律改变现状
网上搜索 TableView 刷新后,出现偏移或抖动的现象,大部分表示是 iOS 11 后,TableView 的问题,只需要设置以下代码就可以:
_tableview.estimatedRowHeight = 0;
_tableview.estimatedSectionHeaderHeight = 0;
_tableview.estimatedSectionFooterHeight = 0;
但是这个并不能解决我的问题!
思来想去,我与众多博主不同的是,我使用的是 cell 动态计算高度。
有了方向后,一番查找~终于找到了一个完美的解决方案!!
NSMutableDictionary *cellHeightsDictionary;
cellHeightsDictionary = @{}.mutableCopy;
tableView.rowHeight = UITableViewAutomaticDimension;
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
[cellHeightsDictionary setObject:@(cell.frame.size.height) forKey:indexPath];
}
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSNumber *height = [cellHeightsDictionary objectForKey:indexPath];
if (height) return height.doubleValue;
return UITableViewAutomaticDimension;
}
给预估计一个精确的 cell 高度,就可以解决这个问题。很棒!~