我有一个链接到a的表视图NSFetchedResultController(即加载数据并跟踪数据的更改绑定到FRC)
我没有AutoLayout在我的单元格中使用(由于它在iOS 8中引入的巨大性能下降).我在单元格中手动布置我的单元格内容(使用-(void)layoutSubviews).另外,行的高度是根据内容计算的,并且正确缓存/无效.
如果与我的数据相关的任何条件发生更改,相关单元格将单独更新(-(void)controllerWillChangeContent:...通过-(void)controllerDidChangeContent:...实现整个委托方法),行更新的动画为:UITableViewRowAnimationNone
这里的问题是,我的细胞有透明背景,我可以看到一些视觉噪声(很可能是实际的细胞被垂直拉伸,我不能肯定地说,因为它们真的是短暂的和短暂的)[self.tableView reloadRowsAtIndexPaths:...];.
我尝试过很多东西都无济于事!
以下是我尝试过的不起作用的内容:
-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath,返回估计高度的准确值.self.tableView.rowHeight=UITableViewAutomaticDimension;,帮助很多,但没有解决它.[self.tableView beginUpdates];并启用之后[self.tableView endUpdates];-(void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath有点帮助的事情:
UIKit并不能解决问题.-(void)layoutSubviews在我的单元格中记录该方法表明,每次更新时,具有更新条件的单元格会连续重新加载3次,而其他单元格只会更新一次.我不是强迫任何[cell layoutIfNeeded];或[cell setNeedsLayout];任何地方.[self.tableView reloadData];不是我的选择.最后,我很抱歉我不能分享任何实际的代码,因为它不是一个测试项目,并且实现的复杂性使得任何代码共享都是徒劳的,除非作为一个整体被理解.
谢谢你的时间.