【发布时间】:2014-09-16 07:33:26
【问题描述】:
我正在使用 ELCImagePicker https://github.com/B-Sides/ELCImagePickerController 从手机库中挑选我的图像。 ELC 有两个返回选项,第一个是 UIImage 本身(我不希望它在选择超过 5 个图像时由于内存而崩溃)。第二个是图像的资产位置,这对记忆很有好处,尽管我的问题是在集合视图上显示图像时。
所以我有这段代码可以正常工作并显示图像,但是当我在集合视图中上下滚动时,它会有点滞后。我认为这是因为每次它想要加载一个单元格时,它都必须经过一个块及其异步。我正在尝试找到一种方法来消除滞后并使其平滑滚动。
任何帮助将不胜感激。 :)
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:_chosenImages[indexPath.row] resultBlock:^(ALAsset *asset) {
UIImage *image = [UIImage imageWithCGImage:asset.thumbnail];
// I believe the problem is here..
[myCell.imageView setImage:image];
} failureBlock:^(NSError *error) {
NSLog(@"An error occurred while loading image: %@", error.description);
}];
【问题讨论】:
-
就我而言,当我处理这样的情况时。我在数组中使用了 ALAssets 而不是 AssetURL。将您的数据源更改为包含资产而不是 AssetURL。
-
这会有什么不同?
-
从某种意义上说,您不必每次都触发异步调用来获取资产,然后每次尝试在集合视图中显示单元格的图像。 [资产缩略图] 足够快,不会在您的主线程上造成延迟。
-
我得到的东西看起来像这样: { UIImagePickerControllerMediaType = ALAssetTypePhoto; UIImagePickerControllerReferenceURL = "assets-library://asset/asset.JPG?id=1A255C21-88AB-4F62-83FA-D23547825C58&ext=JPG";这是我第一次使用资产,那么我如何才能真正从中获取资产呢?它被放置在一个 NSDictionary 中。
-
见下面我的回答。一旦您修改了数据源以保存资产,然后在单元格显示方法中,删除异步调用以获取资产。只需使用索引路径然后缩略图获取资产。然后显示它。
标签: ios objective-c uiimageview uicollectionview