TableView 刷新后调用 reloadData 出现上移

网上搜索 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 高度,就可以解决这个问题。很棒!~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,039评论 3 119
  • 赢了别人,看谁都是简单 输了自己,处处都是复杂 善良的内心也住这一个小恶魔 邪恶的思想也飞这一个真天使 ​​​
    将觉者阅读 1,417评论 0 2
  • 泡芙001阅读 861评论 0 0