草庐IT

iphone - 自定义 UITableView 缓慢滚动 : Is there a limit of number of items to add in UITableViewCell

coder 2024-01-21 原文

我通过在 Xcode 中设计自己的 UITableViewCell 并将其加载到 cellForRowAtIndexPath 来创建自定义表格。我面临滚动问题;表格滚动真的很慢而且一点也不流畅。在我的每个单元格中:

  • 2 个或 3 个 UIImageView,其中第 3 个在需要时动态添加
  • 1 UILabel
  • 1 UITextView
  • 有些单元格可能有 2 个 UIButton,有些单元格有 1 个 UIButton,大多数根本没有按钮
  • 在某些单元格中,我可能会添加一个叠加层 UIView

ImageView 、 TextView 和按钮的大小在每个单元格中都不同。为了防止每次滚动表格时都计算大小,我将所有大小加载到 viewWillAppear 中并将它们存储在一个数组中,而在 cellForRowAtIndexPath 中我只从数组中加载大小并将它们设置为所需的对象。

我尝试了我在网上找到的所有想法(比如在 if(cell == nil) 的正文中加载图像,如图 here 所示,或者不对单元格进行出队...)但没有解决我的问题。

另一方面,我注意到聊天应用程序 WhatsApp 每个单元格使用相似数量的项目(例如,当用户收到图像时,有 2 个按钮查看和转发、图像缩略图、缩略图旁边的复选标记图像,日期标签,缩略图后面的气泡图像...)但那里的滚动非常流畅。

即使表格中只有 10 个单元格,我的滚动速度也很慢。这是我的问题:

  1. 我是否做了一些我没有注意到的严重错误?
  2. 为防止滚动缓慢而应添加到自定义单元格的项目数量是否有限制?
  3. 有没有一种方法可以通过在 Xcode 中使用 Product->Profile 来检测滚动缓慢的原因?
  4. 谁能为我的问题提出解决方案?

非常感谢。

最佳答案

使用图像时 TableView 的缓慢操作通常是因为调整大小操作。我做的最后一个应用程序有来自网络的图像。例如,传入的一张图像是 4k 像素 x 4k 像素图像。所有其他的都比我试图显示的缩略图大小的图像大得多。总而言之,每次图像离开屏幕时,图像都会从 RAM 中移出并返回到闪存中,这是为了帮助保存 RAM 内存。问题是留在闪存中的是您分配给 UIImageView 的原始 UIImage。 UIImage 保留原始大小的图像。因此现在每次图像返回屏幕时都必须从其原始大小调整大小(小于或大于您希望显示的大小)。每次 4k px x 4k px 图像返回屏幕时,TableView 都会出现故障。诀窍是在将图像分配给支持 UIImageView 的 UIImage 之前,将图像的大小精确地设置为您希望显示的大小。举个例子,这个表格 View 一次只显示大约 10 到 12 个项目,而且速度仍然非常慢(即使在所有图像都完全从网络加载之后)。

另一个潜在的缓慢。我有另一个我构建的应用程序,我最初希望显示的数据可以选择复制和过去。您可以使用 UITextView 对象执行此操作。问题是我输出的值表是 17 列宽 x 218 行。在这种情况下,因为每个 UITextView 都具有滚动功能(即使我将其关闭)导致每个 UITextView 必须重新计算它自己的 subview 显示坐标等......导致整体表格滚动非常缓慢。最后,如果不需要编辑或复制和粘贴数据,您真的应该只使用 UILabel 对象显示它。当我这样做时,我的 UITableView 的性能得到了极大的提升。

关于iphone - 自定义 UITableView 缓慢滚动 : Is there a limit of number of items to add in UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11071215/

有关iphone - 自定义 UITableView 缓慢滚动 : Is there a limit of number of items to add in UITableViewCell的更多相关文章

随机推荐