所以这个广告很奇怪,我不确定问题是否出在 AssetsLibrary API 上,但我不知道还会发生什么。
我正在使用 ALAssetsGroup 上的 -enumerateAssetsUsingBlock 方法加载带有 ALAssets 的数组。完成后,我正在加载自定义图像滚动条。当滚动条完成滚动时,我使用 NSInvocationOperations 从磁盘上的照片库中加载当前可见视图(页面)的图像。一旦图像被加载并被缓存,它会通知代理,然后代理从缓存中获取图像并将其显示在滚动条的图像视图中。
一切正常,但是从 -setImage: 实际被调用到它实际显示在屏幕上的时间令人难以忍受——有时需要 10 秒或更长时间才能真正显示出来。
我已经尝试过调整图像大小和不调整图像大小,这在我调整大小时几乎不会增加处理时间。正如我所说,在我在图像视图上调用 -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];
}
}
}