UITableView与UIImageViews显示大型UIImages - 滚动性能

时间:2013-05-23 06:57:09

标签: iphone ios objective-c uiimageview uiimage

我有一个 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 app,滚动非常流畅,甚至没有一点滞后。

我应该遵循哪些优化技巧?

谢谢大家!

2 个答案:

答案 0 :(得分:2)

  1. 创建自定义单元格。最大限度地减少透明度的使用,您还可以在不使用UIImageViews和UILables对象的情况下绘制自己的所有内容,即使在3g设备上也可以生成非常快速的滚动。
  2. 将所有图像缓存在一个数组中,而单元格中的行只能读取它们。
  3. 您可以在将图像添加到源阵列之前将图像调整为实际图纸尺寸。
  4. 避免在单元格中为行或滚动时使用的任何其他方法中的对象分配和释放。对象分配很昂贵。
  5. 如果您在滚动时下载它们异步,请尝试不为每个图像创建新线程。您可以拥有一个或多个工作线程。

答案 1 :(得分:0)

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