【发布时间】:2015-10-12 14:54:54
【问题描述】:
我有一个CollectionView,它使用高质量图像显示项目列表。为了提高滚动时的性能,我植入了以下代码:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), { () -> Void in
var image = UIImage(data: item.image_data as! NSData)
UIGraphicsBeginImageContextWithOptions(image!.size, true, 0);
image?.drawAtPoint(CGPointZero)
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
dispatch_async(dispatch_get_main_queue(), { () -> Void in
cell.itemImage.image = image
})
})
这消除了滚动的所有延迟,但会导致一个新问题 - 如果我快速滚动 100 个项目,我登陆的单元格可能会更改图像 5-6 次,然后才会停留在该项目的正确图像上。我猜这只是collectionView 的追赶。
所以我需要尽可能快地平滑滚动和正确显示图像。什么是两全其美的最有效方法?
我尝试在viewDidLoad() 中预加载图像,然后根据需要将其插入,但结果证明这是一个灾难性的记忆想法。
【问题讨论】:
标签: ios swift uiimageview uicollectionview