更新
在尝试寻找解决方案时,我碰巧注意到以下两个问题:
我会调查使用这两个帖子,如果它有用的话会更新。
原始帖子
我得到的这个水平Feed每页包含1个项目。每个项目都包含一些文字信息和我从网址中提取的背景图片。
由于背景图像质量很高,下载可能需要一些时间,所以我发现我需要一个占位符。我想使用的占位符是背景图像的极度模糊,质量非常低的版本,这意味着我需要改变心爱的AFNetworking
方法:[bg setImageWithURL: placeholderImage:]
- 一些知道如何接受的方法来自url的占位符(假设占位符图像的重量小于原始大小的占位符。)
总结一下,我的问题是:如何从网址获取图片并使用占位符,其中占位符图片也来自网址?
我尝试的事情:
创建另一个UIImageView *placeholder
并在其上使用[placeholder setImageWithURL:]
方法和占位符的网址,然后使用placeholder.image
作为[bg setImageWithURL: placeholderImage:]
调用的占位符
使用[placeHolderImage setImageWithURLRequest:placeholderImage:success:failure:]
方法,并在调用[bg setImageWithURL:]
方法的成功块中。
答案 0 :(得分:1)
显然我走在正确的轨道上,由于缺乏关注,它无法正常工作。 (保留周期有问题)
使用我在问题中提供的两个链接,我最终设法通过对占位符使用setImageWithURLRequest:placeholderImage:success:failure:
来解决问题,并在成功块上再次使用setImageWithURLRequest:placeholderImage:success:failure:
方法 - 这次是原始图片。
我将提供我的解决方案的代码片段 - 可能在将来帮助某人:
//Protect against retain cycle
__weak UIImageView *weakBg = bg;
//get the placeholder - note the placeholderImage parameter is nil (I don't need a placeholder to the placeholder
[bg setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:placeholderURL]]
placeholderImage: nil
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
UIImageView *strongBg = weakBg; // Make local strong reference to protect against race conditions
if (!strongBg) return;
//Protect against retain cycle
__weak UIImageView *weakBg = strongBg;
//Get the original bg with the low quality bg as placeholder
[strongBg setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:originalBgImageURL]]
placeholderImage:image
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
UIImageView *strongBg = weakBg; // Make local strong reference to protect against race conditions
if (!strongBg) return;
//Do stuff
} failure:NULL];
} failure:NULL];