iOS CollectionView:显示视图,然后下载图像,然后显示图像

时间:2015-02-27 15:37:35

标签: ios objective-c

我有一个集合视图,其中包含每个部分中的单元格,每个单元格中都有一个图像。

可能,集合视图包含20个或更多单元格。

我想将图像从互联网加载到单元格中。问题是这可能需要几秒钟,即使图像没有完全下载,我也希望显示collectionView。

集合视图被赋予一个包含URL的数组,到目前为止,我一直在collection view cellforitematindexpath

下载互联网

但是,视图仅在加载所有单元格后才会显示,并且由于每次调用collection view cellforitematindexpath都会下载图像,如果从URL中删除了20张图像,则需要很长时间。

如何显示视图,然后下载图像,然后显示它们?

希望我让自己理解,如果没有,请问!

谢谢!

C

1 个答案:

答案 0 :(得分:1)

是的,您可以使用SDWebImage(如上面评论中所述)。 您可能面临的另一个有趣的方面,即如果图片尚未加载和用户滚动视图,则可能是dequeueReusableCellWithReuseIdentifier:forIndexPath的问题,因此下载图片时更好id <SDWebImageOperation>

准备重用将是这样的:

- (void)prepareForReuse
{
    [super prepareForReuse];

    if (self.imageOperation)
        [self.imageOperation cancel];

    self.imageOperation = nil;
}

负载将是这样的:

SDWebImageManager *manager = [SDWebImageManager sharedManager];    
self.imageOperation = [manager downloadWithURL:[NSURL URLWithString:urlString]
                                      options:SDWebImageRetryFailed
                                     progress:nil
                                    completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished) {
                                        if (image)
                                        {
                                            self.imageView.image = image;
                                        }
                                    }];