2012-07-23 58 views
0

我有一些使用+ UIImage setImageWithURL:方法的麻烦。我想要做的是首先发送一个缩略图的异步请求。该图像非常小,因此应该快速加载。我还想发送另一个异步请求来下载图像的高分辨率版本,因为它需要更长的时间才能加载。AFNetworking + UIImage首先下载低分辨率图像

我以为这会是这样的:

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

如果你看一看的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行)时,它会取消第一行的操作。

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

希望它有帮助。

+0

谢谢,我想出了一些非常相似的东西。我使用方法'setImageWithURLRequest:request placeholderImage:nil success:',并在完成时调用'setImageWithURL:placeholderImage:'并使用返回的图像作为占位符。 – mkral 2012-07-23 19:19:43