我想懒洋洋地加载图片并在启用分页的scrollview中显示它。一次性加载所有图像导致应用程序崩溃,因为我正在加载fullScreenImage。它的工作正常,如果我使用aspectRatioThumbnail加载缩略图,但图像质量更差。所以我想只为可见页面加载图像,而不是一次加载所有内容。如果我知道如何从照片库懒洋洋地加载图像,我只能用三页显示图像。下面是我的代码...
-(void)loadImagesFromLibrary{
imageList = [[NSMutableArray alloc] init];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
CGFloat __block xaxis=05;
NSUInteger __block images = 0;
dispatch_queue_t queue = dispatch_get_main_queue();
dispatch_async(queue, ^(void){
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if(group){
[group setAssetsFilter:[ALAssetsFilter allPhotos]];
[group enumerateAssetsUsingBlock:^(ALAsset *assets, NSUInteger index, BOOL *innerStop){
if (assets && [[assets valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto])
{
//ALAssetRepresentation *representation = [assets defaultRepresentation ];
//UIImage *img = [UIImage imageWithCGImage:[representation fullScreenImage]];
UIImage *img = [UIImage imageWithCGImage:[assets aspectRatioThumbnail]];
if(img){
[imageList addObject:img];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(xaxis, 5, 300, HEIGHT)];
[imageView setImage:[self rectSizeFormat:img Size:CGSizeMake(300, HEIGHT)]]; //resizing the image
[imageView setTag:images++];
[imageView setUserInteractionEnabled:YES];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(displayImageInMiddleView:)];
[tapGesture setNumberOfTapsRequired:1];
[imageView addGestureRecognizer:tapGesture];
[tapGesture release];
[scrollView addSubview: imageView];
[imageView release];
xaxis+=320;
}
}
}];
[scrollView setContentSize:CGSizeMake(xaxis, HEIGHT)];
}
else{
DLog(@"No image");
}
}
failureBlock:^(NSError *err) {
DLog(@"%@", [err localizedDescription]);
}];
});
}
我知道无法用几行解释。我所要求的只是给我一个提示,以达到我想要的,或者建议我如何以不同的方式做到这一点。非常感谢提前。
答案 0 :(得分:0)
我的“幻灯片”型显示器存在类似问题。 我的解决方案是枚举目标相册中的资产和每个资产
当我需要每个幻灯片图像的更高分辨率版本时,我会使用保存的assetURL触发异步请求以加载完整大小的图像。当然这是异步的,所以你必须在UI(我的情况下是UIImageView)中放置一个位置,以便在最终从资产库到达时放置图像。在加载完整大小的图像之前,我在相同的UIImageView中显示缩略图(具有缩放 - 宽高比)。
图像加载的异步性质是一个真正的烦恼。