所以这是一个非常奇怪的广告,我不确定问题是否出在AssetsLibrary API上,但我不知道还会发生什么。
我在ALAssetsGroup上使用-EnumerateAssetSingBlock方法加载一个包含ALAssets的数组。当它完成时,我正在加载一个自定义的图像滚动条。当滚动程序完成滚动时,我使用NSInvocationOperations从磁盘上的照片库加载当前可见视图(页面)的图像。一旦图像被加载并被缓存,它就会通知代理,然后代理从缓存中获取图像并将其显示在滚动条的图像视图中。
一切正常,但从-setImage:实际被调用到它实际显示在屏幕上所花费的时间是无法忍受的——有时需要10秒或更长时间才能真正显示出来。
我已经尝试过有和没有图像大小调整,这几乎没有增加任何处理时间,当我做的大小调整。正如我所说的,在调用image视图中的-setImage之后,速度会有所放缓。有人知道AssetLibrary API的某些方面可能导致这种情况吗?
以下是一些相关代码:
- (void)setImagesForVisiblePages;
{
for (MomentImageView *page in visiblePages)
{
int index = [page index];
ALAsset *asset = [photos objectAtIndex:index];
UIImage *image = [assetImagesDictionary objectForKey:[self idForAsset:asset]];
// If the image has already been cached, load it into the
// image view. Otherwise, request the image be loaded from disk.
if (image)
{
[[page imageView] setImage:image];
}
else {
[self requestLoadImageForAsset:asset];
[[page imageView] setImage:nil];
}
}
}