我正在研究使用SDWebImage将图像下载到我的应用程序中。我想尽快显示图像,所以我的服务器上每个图像都有两个版本;一个低质量和一个高品质。目前,我通过使用两个NSURLRequest
来实现这一点,每个版本的图像都有一个[imageView setImageWithURL:lowURL];
[imageView setImageWithURL:highURL];
。这非常有效,因为应用程序将同时下载两个版本,显示低质量,然后在完成下载后将图像更改为高质量版本。
我尝试使用以下方法复制此内容:
{{1}}
但是当我运行应用程序时,第二个呼叫会取消第一个呼叫。任何有关这方面的帮助都会受到极大关注。
由于
答案 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)