iOS UITableViewAutomaticDimension RowHeight 性能不佳/跳跃
Posted
技术标签:
【中文标题】iOS UITableViewAutomaticDimension RowHeight 性能不佳/跳跃【英文标题】:iOS UITableViewAutomaticDimension RowHeight Poor Performance / Jumping 【发布时间】:2014-11-13 20:23:59 【问题描述】:我正在 ios 8 上构建一个基本的表格视图。我观看了 WWDC '14 关于自动调整单元格大小的视频,并试图重现这个概念,但遇到了一些问题。在 viewDidLoad 上:我正在调用:
//estimate for my cells though they may vary
self.tableView.estimatedRowHeight = 300.0;
self.tableView.rowHeight = UITableViewAutomaticDimension;
当我的视图和表格加载时,性能还可以。当我单击一个单元格时,程序会将我带到详细视图。当我点击该视图上的后退按钮并返回到表格视图时,事情就开始变得奇怪了。然后,当我滚动时,单元格开始“跳跃”。通过跳跃,我的意思是他们滚动不流畅——他们倾向于从一个地方猛拉或跳到另一个地方。
我应该补充一点,内存不是问题,因为单元被重复使用并且后台数据很少。我的单元格(在故事板文件中)的约束也是蓝色的,我在调试器中没有看到自动布局约束异常。
还有其他人在 UITableViewAutomaticDimension 中看到过这种行为吗?它只是一个苹果的错误还是还有更多?谢谢。
【问题讨论】:
我也面临同样的问题?有什么解决方法吗? @AhmadRaza 我最终做的是回到手工编码的单元格,以确保完全控制布局和功能。所以基本上,我没有使用界面生成器,而是在代码中布置单元格的所有元素,然后覆盖 tableView:heightForRowAtIndexPath: 来告诉 tableView 每个单元格的高度。 我向苹果提交了一个错误(关于这种行为),他们确认这是一个错误(并且是已经提交的错误的副本),但没有提供更多信息(非常烦人)。所以我假设 UITableViewAutomaticDimesion 已知有点错误。如果可能的话,我现在会避免它。 我已经实现了 WWDC2014 中的示例来演示这个问题,它可以在这里找到:github.com/IndieGoGo/WWDC-Dynamic-Type-Jumpy-Scroll-Issue 也提交了一个没有响应的错误。 【参考方案1】:我使用self.tableView.rowHeight = UITableViewAutomaticDimension;
这一行发现了奇怪的问题
但是,当我用委托方法替换它时,一切都变得更好了。你的情况是:
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
return UITableViewAutomaticDimension;
- (CGFloat) tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
return 300.0f;
【讨论】:
【参考方案2】:在代码中再添加一个委托方法
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath return Approxheight;
它将早于当前时间加载 uitableView。 我希望这对你有用。
【讨论】:
【参考方案3】:在 cellForRowAtIndexPath 中添加以下行
cell.textLabel.numberOfLines = 0;
【讨论】:
以上是关于iOS UITableViewAutomaticDimension RowHeight 性能不佳/跳跃的主要内容,如果未能解决你的问题,请参考以下文章