延迟加载UICollectionView图像

时间:2016-06-12 14:35:39

标签: objective-c uicollectionview lazy-loading kinvey

对于UICollectionView的每个单元都有一个UIImageView,我需要加载它们,这样当你滚动它们正确显示的集合时,每个图像在其索引路径的单元格上加载一次。

每张图片都是从Kinvey下载的。

下载每张图片的代码:

UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];    

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0,  cell.bounds.size.width, cell.bounds.size.width)];

[cell addSubview:imageView];    

    [KCSFileStore downloadData:@"id for item at index path"] completionBlock:^(NSArray *downloadedResources, NSError *error) {

        if (error == nil) {

            KCSFile* file = downloadedResources[0];

            dispatch_async(dispatch_get_main_queue(), ^(void){

                imageView.image = [UIImage imageWithData:file.data];
            });

            NSLog(@"Downloaded.");

        } else {

            NSLog(@"Error: %@", error.localizedDescription);
        }

    } progressBlock:nil];

" dispatch_async(dispatch_get_main_queue(),^(void)..."是我试图解决我异步下载图像的问题,但是没有用。

提前致谢。

1 个答案:

答案 0 :(得分:0)

为什么要尝试下载图像。 如果要使用第三方库在collectionView中对图像执行延迟加载。然后SDWebimages 是最好的第三方库。这个库不仅执行延迟加载,还提供多个其他选项。看看吧。

希望这会帮助您并解决您的问题。