使用SDWebImage一次下载两个图像

时间:2013-12-17 01:11:54

标签: ios objective-c asynchronous sdwebimage

我正在研究使用SDWebImage将图像下载到我的应用程序中。我想尽快显示图像,所以我的服务器上每个图像都有两个版本;一个低质量和一个高品质。目前,我通过使用两个NSURLRequest来实现这一点,每个版本的图像都有一个[imageView setImageWithURL:lowURL]; [imageView setImageWithURL:highURL]; 。这非常有效,因为应用程序将同时下载两个版本,显示低质量,然后在完成下载后将图像更改为高质量版本。

我尝试使用以下方法复制此内容:

{{1}}

但是当我运行应用程序时,第二个呼叫会取消第一个呼叫。任何有关这方面的帮助都会受到极大关注。

由于

3 个答案:

答案 0 :(得分:3)

修改框架不是解决问题的好方法,除非没有其他更好的方法。

在SDWebImage的UIImageView+WebCache.h类别中,有针对这种情况的方法。

例如:

__weak UIImageView *weakImageView = imageView;
[imageView setImageWithURL:thumbURL placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
    [weakImageView setImageWithURL:bigURL placeholderImage:image];
}];

答案 1 :(得分:2)

如果您查看- (void)setImageWithURL:(NSURL *)url文件中的UIImageView+WebCache.m,您会发现第一行中有[self cancelCurrentImageLoad];,这取消了当前的图像加载操作。如果你想同时加载它们,你可以尝试注释掉这一行来测试它是否会按预期工作,如果不能那么你最好尝试其他方法。

答案 2 :(得分:0)

可能这个问题最好以不同的方式解决,尝试在显示之前预先获取图像

这是快速执行此操作的代码

let prefetcher = SDWebImagePrefetcher.shared()
let urls :[URL] = [URL(string: imageStringUrl)] 
prefetcher.prefetchURLs(urls)