我正在编写一个应用程序,它是UIImagePicker的克隆,但使用Assets库。当用户选择照片时,图像加载需要的时间太长。我注意到当我使用与我正在开发的功能相同的照片应用程序时,图像加载速度会快一些。我听说这个网站上的另一个响应者提到了以下内容,以模仿照片应用程序的功能:
“首先加载缩略图(最好用dispatch_async) - 这应该非常快。完成后,像上面一样加载全屏图像。这就是苹果在Photo App中提供的流畅用户体验。“
有没有人有关于如何实现这一目标的代码示例?我不太清楚我明白他的意思。
此处是我用于加载图像的代码(我将图像作为参数传递给另一个视图控制器):
myImage = [UIImage imageWithCGImage:[[myAsset defaultRepresentation] fullScreenImage]];
答案 0 :(得分:4)
类ALAsset
有两种获取缩略图的方法:
- (CGImageRef)thumbnail
- (CGImageRef)aspectRatioThumbnail
我敢打赌,他们比获得资产的全屏版本更快。
此外,您可以使用异步操作包装它们。请务必更新主线程中的UI。大概是这样的:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
/* obtain the image here */
dispatch_async(dispatch_get_main_queue(), ^{
/* update screen here */
});
[pool drain];
});
如果您需要获取视频的缩略图,请使用AVAssetImageGenerator
。它有一种异步获取它们的方法。
查找Apple示例代码(AVEditDemo以及可能使用资产库的其他人)。