您的位置:首页 > 移动开发 > IOS开发

iOS tableView reloadData 抖动问题

2018-01-30 17:23 1256 查看
在使用自动布局之后,屏幕刷新调用reloadData会间歇性的抖动,体验及其差。

产生原因:

在使用自动布局之后,UITableViewAutomaticDimension
 高度自动适应,就是每次计算高度的时候产生闪动,我怀疑过scroll动画,频繁调用,但是最终原因是这个自动布局计算cell高度。

解决方法:

 对自动计算的高度进行缓存,仔细观察,第一次出现的时候不抖动的。

代码逻辑:

// declare cellHeightsDictionary
NSMutableDictionary *cellHeightsDictionary;

// initialize in code (thanks to @Gerharbo)
cellHeightsDictionary = @{}.mutableCopy;

// declare table dynamic row height and create correct constraints in cells
tableView.rowHeight = UITableViewAutomaticDimension;

// save height
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
[cellHeightsDictionary setObject:@(cell.frame.size.height) forKey:indexPath];
}

// give exact height value
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSNumber *height = [cellHeightsDictionary objectForKey:indexPath];
if (height) return height.doubleValue;
return UITableViewAutomaticDimension;
}

完美解决~
出处:问题出处
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios tableview 刷新抖动
相关文章推荐