美文网首页iOS
TableView 刷新后调用 reloadData 出现上移

TableView 刷新后调用 reloadData 出现上移

作者: 自律改变现状 | 来源:发表于2018-08-27 18:56 被阅读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 高度,就可以解决这个问题。很棒!~

相关文章

网友评论

    本文标题:TableView 刷新后调用 reloadData 出现上移

    本文链接:https://www.haomeiwen.com/subject/fivtwftx.html