1

我有一个UITableView,每个单元格包含 4 个UIImageView。我正在异步加载图像(使用第三方UIImageView扩展进行异步加载)。并且还做缓存。所以表格视图可以自由滚动。但是当我将图像分配给UIImageView时,我感到滚动滞后。

UIImage *image = [UIImage imageWithContentsOfFile:imageFileURL];
// Scroll is very smooth if I comment out the below line
imageView.image = image;

如果我注释掉上面代码中的最后一行,那么滚动会更快。当我启用这条线时,滚动会滞后。所以我需要找到一种在不干扰滚动的情况下将图像分配给图像视图的方法。

在我的应用程序中要注意的一件重要事情是,图像是大图像,例如,它们大于 500x500 像素。我无法处理图像大小,因为它们来自服务器,我无法控制它。

我唯一的选择是找出在不阻塞 UI 交互的情况下将大图像分配给图像视图的方法。

我希望滚动像Fancy应用程序一样工作。我看过 Fancy 应用程序,滚动非常流畅,甚至没有一点延迟。

有什么我应该遵循的优化技巧吗?

感谢大家!

4

2 回答 2

2
  1. 创建您的自定义单元格。尽量减少透明度的使用,你也可以在不使用 UIImageViews 和 UILables 对象的情况下自己绘制单元格的所有内容,这即使在 3g 设备上也会产生非常快的滚动。
  2. 将所有图像缓存在一个数组中,并在单元格中仅读取它们。
  3. 在将图像添加到源数组之前,您可以将图像调整为实际绘图大小。
  4. 避免在单元格中为行或在滚动时使用的任何其他方法中分配和释放对象。对象分配是昂贵的。
  5. 如果您在滚动时异步下载它们,请尽量不要为每个图像创建一个新线程。您可以拥有一个或多个工作线程。
于 2013-05-23T07:10:14.067 回答
0

请在此处此处找到我认为对您很有帮助的链接。我认为这个问题的问题与链接中的问题相同。如果没有,请告诉我。

于 2013-05-23T07:29:58.437 回答