【问题标题】:Scroll lag in UITableView cells with large images带有大图像的 UITableView 单元格中的滚动滞后
【发布时间】:2012-08-17 12:42:54
【问题描述】:

我创建了一个原型UITableViewCell,并在其中填充了包含图像路径字符串和单元格标签文本的字典。我为UITableViewCellUIImageView 使用与我的应用程序中较大的图像视图相同的图像大小,并且其中一些图像非常大.. 例如300w x 800h 和300 kb 大小。所以每个单元格总共加载了大约 500 kb 的内容。因此,当我运行该应用程序时,在第一次向下滚动 UITableView(创建单元格时)时,我会遇到滚动延迟。

如果我这样离开,它会通过 App Store 审核还是可能因此被拒绝?听说过什么案例吗?

我知道我可以为 UITableViewCell 制作一些较小的图像。那么,UIImageView(旧款 iPhone 和视网膜)的首选像素尺寸是多少? (或者UITableViewCell 是否有最大 kb 加载限制?)

如果你要说 44 和 88 点,研究告诉我这是 默认高度 UITableViewCell 本身,没什么可做的带有UIImageView 尺寸,或者如果有一个 kb 限制..

最后:还有其他(苹果认可的方法)可以避免延迟吗?比如在滚动开始之前创建单元格之类的?

【问题讨论】:

  • 请参阅 LazyTableImages 示例应用程序 (pple.developer)developer.apple.com/library/ios/#samplecode/LazyTableImages/…
  • 附言。我想滞后是由图像的负载引起的,而不是在搜索正确的字典索引和字符串值时,因为它只有 100 个字典,每个字典有 10 个字符串,存储在加载到 viewdidload 中的可变数组的 plist 中..跨度>
  • 谢谢。但我只对图像使用主包,将它们上传到服务器目前不是首选的解决方案,但可能是一个长期的解决方案。
  • 你使用任何后台线程来显示图像?

标签: iphone uitableview uiimageview


【解决方案1】:

尝试使用LazyLoading。如果图像来自服务器。这是滞后(延迟)的主要问题,并且由于 hte 单元被重用所以每当你滚动它每次都会加载图像。

此外,由于您说图像非常大,因此请尝试将图像转换为较小的尺寸。 图像的大小未预定义为 44 或 88 或任何值。我们可以根据单元格的高度来设置大小。

编辑 正如 Kristoffer 所说,这些图像来自他的主包,而不是来自服务器 你能不能试试换成cellForRowAtIndexPath那一行

static NSString *CellIdentifier = @"Cell";

NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d%d",indexPath.row,indexPath.section];

不太确定它是否会起作用。但它会停止重复使用单元格,因此您的单元格不会重新加载单元格中已加载的图像。

【讨论】:

  • @KristofferBilek 请看一下编辑
  • 感谢您的宝贵建议!将尝试这个,然后在我启动服务器时继续使用 LazyLoading。 :-)
猜你喜欢
  • 1970-01-01
  • 2018-08-30
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 2018-06-27
  • 1970-01-01
相关资源
最近更新 更多