gpt4 book ai didi

ios - UITableViewCell 内容在单独重新加载单元格时闪烁

转载 作者:可可西里 更新时间:2023-11-01 03:35:28 28 4
gpt4 key购买 nike

我有一个链接到 NSFetchedResultController 的 TableView (即加载数据和跟踪数据更改绑定(bind)到 FRC)

我没有在我的单元格中使用 AutoLayout(由于它在 iOS 8 中引入的巨大性能下降)。我在单元格中手动布置单元格的内容(使用 -(void)layoutSubviews)。另外,行的高度是根据内容计算的,并被正确缓存/失效。

如果与我的数据相关的任何条件发生变化,相关单元格将单独更新(整个 -(void)controllerWillChangeContent:...-(void)controllerDidChangeContent:... 委托(delegate)方法实现)行更新的动画是: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 中删除所有 subview

有点帮助的事情:

  • 使单元格不透明(即为单元格设置背景颜色)。奇怪的是,伪像似乎在实际的单元格内容之下。

更多信息

  • 我单元格的大部分内容都是来自 AsyncDisplayKit 的节点(ASTextNode、ASImageNode),但将它们替换为对应的 UIKit 并不能解决问题。
  • 我所有的视觉更新都发生在主线程上。我总是确保这一点。
  • 问题不是无处不在,而是经常存在。如果有帮助,它们似乎在插入第二个细胞后发生得更多。
  • 在我的单元格中记录方法 -(void)layoutSubviews 显示具有更新条件的单元格在每次更新时连续重新加载 3 次,而其他单元格只更新一次。我不会在任何地方强制执行任何 [cell layoutIfNeeded];[cell setNeedsLayout];
  • 使用 [self.tableView reloadData]; 重新加载整个 TableView 对我来说不是一个选项。

其他更多信息

  • 使单元格不透明会导致单元格只布置一次!奇怪!

最后,很抱歉我不能分享任何实际代码,因为它不是一个测试项目,而且实现的复杂性使得任何代码共享都是徒劳的,除非作为一个整体来理解。

感谢您的宝贵时间。

最佳答案

我在使用 reloadRowsAtIndexPath 时也遇到了 UITableViewCell 闪烁的问题,所以我所做的是 -

     [UIView setAnimationsEnabled:NO];
[self.tableView beginUpdates];

[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil]
withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
[UIView setAnimationsEnabled:YES];

上面的代码片段在重新加载单元格时不会在单元格上显示动画。

关于ios - UITableViewCell 内容在单独重新加载单元格时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29739917/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com