3

在我的应用程序中,我有一个包含自定义 UITableViewCells 的 UITableView。滚动非常缓慢和滞后,我需要解决这个问题。

每个单元格包含 5-6 个标签、几个按钮和一个图像。

我有一个单元格的 xib,我在其中放置按钮、标签和图像视图,但我在 cellForRowAtIndexPath 中设置了所有图像。要加载我使用 [UIImage imageNamed:@""] 的图像,我阅读它更适合优化。我也是重用细胞。

我还发现,即使我注释掉并且不设置图像,表格仍然是滞后的,只有带有文本的标签。

有没有人对如何拥有一个相当复杂的表格单元格同时仍然具有良好、流畅的性能有任何建议?将自定义单元格作为 xib 会影响性能吗?

4

3 回答 3

10
  1. 确保你真的在重复使用细胞。确保您使用的单元格标识符已UITableViewCell 在界面生成器的 XIB 中设置。

  2. 在子视图中使用较少的透明度。如果可能的话,进入你的标签并确保它们的背景与单元格的背景匹配。

  3. 检查未优化的代码。例如,如果您正在显示一个格式化的日期并且正在创建一个NSDateFormatter每次tableview:cellForRowAtIndexPath:调用的实例,这将真的让您的应用程序陷入困境。

  4. 使用带有 Timing 和 Core Animation 模块的 Instruments 来查找大部分时间都花在了哪里。最终,这些可以揭示真正的性能问题所在。

于 2012-02-29T14:58:57.283 回答
4

实现一个自定义子类并在一个 opaque 上UITableViewCell进行自己的绘图。drawRect:UIView

这样做会大大加快滚动速度。

于 2012-02-29T14:56:55.653 回答
2

在 IB 中将一些属性设置为 NO。

在滚动条中,将“水平滚动”设置为 NO。在 Touch 中,将“Delay content touches”和“Cancellable content touches”设置为 NO

它将使您的表格视图平滑滚动

于 2012-02-29T15:32:38.343 回答