使用AFNetworking SetImageWithURL显示UIActivityIndi​​cator

hug*_*dan 13 objective-c ios afnetworking

我正在使用AFNetworking库来设置包含URL内容的图像.在以下示例中,topLeftImage是UIImageView的一个实例.

[topLeftImage setImageWithURL:[NSURL URLWithString:imageURL]];
Run Code Online (Sandbox Code Playgroud)

我想要做的是在下载图像时显示UIActivityIndi​​catorView.但是,我无法确定触发活动指示器的启动和停止的位置.以下是我的活动指标代码.

UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[topLeftImage addSubview:activityIndicator];
[activityIndicator startAnimating];
Run Code Online (Sandbox Code Playgroud)

如何将上述代码链接到setImageWithURL方法,以便仅在下载图像时显示活动指示符?

Lui*_*oza 38

UIImageView + AFNetworking.h类提供了一个setImageWithURL方法,允许您使用成功和失败块.一旦请求成功完成或失败,将执行此块.因此,您可以在请求之前启动动画,并使停止成功并使失败块.这是一个示例代码:

NSURL *imageURL = [NSURL URLWithString:@"http://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Mona_Lisa%2C_by_Leonardo_da_Vinci%2C_from_C2RMF_retouched.jpg/402px-Mona_Lisa%2C_by_Leonardo_da_Vinci%2C_from_C2RMF_retouched.jpg"];
NSURLRequest *imageRequest = [NSURLRequest requestWithURL:imageURL];
[_activityIndicator setHidden:NO];
[_activityIndicator startAnimating];
[_imageView setImageWithURLRequest:imageRequest
                  placeholderImage:nil
                           success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
 {
     [_activityIndicator setHidden:YES];
     [_activityIndicator stopAnimating];
     _imageView.image = image;
 }
                           failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)
 {
     [_activityIndicator setHidden:YES];
     [_activityIndicator stopAnimating];
 }];
Run Code Online (Sandbox Code Playgroud)

  • 在块中引用self时要小心保留周期 (3认同)