AFNetworking + UIImage首先下载低分辨率图像

时间:2012-07-23 18:46:21

标签: iphone ios ios5 afnetworking

我使用+ UIImage setImageWithURL:方法遇到了一些麻烦。我想要做的是首先发送缩略图图像的异步请求。这个图像很小,所以应该很快加载。我还想发送另一个异步请求来下载图像的高分辨率版本,因为加载需要更长的时间。

我认为它会是这样的:

NSURL *thumbURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.server.com/uploads/thumbs/%@.png", name]];
[imageView setImageWithURL:thumbURL placeholderImage:[UIImage imageNamed:@"PHImage.png"]];

NSURL *hiRezURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.server.com/uploads/%@.png", name]];
[imageView setImageWithURL:hiRezURL];

但这只会加载高分辨率图像并且耗时太长。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果您查看UIImageView+AFNetworking.m的实现,您会看到它声明了一个属性:

@property (readwrite, nonatomic, retain, setter = af_setImageRequestOperation:) AFImageRequestOperation *af_imageRequestOperation;

并且- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholderImage方法做的第一件事(实际上它首先调用-setImageWithURLRequest:placeholderImage:success:failure:)是[self cancelImageRequestOperation];,它实际上取消了类属性af_imageRequestOperation的操作。

这意味着,当您再次调用该方法(在第3行)时,它会取消第1行的操作。

更好的方法是使用+ imageRequestOperationWithRequest:imageProcessingBlock:success:failure:并在成功块中设置图像视图的图像。我想如果你使用这种方法,你之后也需要调用[operation start];

希望它有所帮助。