Dan*_*pos 6 objective-c uiimageview ios afnetworking
首先,我正在使用这种AFNetworking方法:
[imageView setImageWithURL:[NSURL URLWithString:@"http://site.com/img.png"]];
Run Code Online (Sandbox Code Playgroud)
1 -这个方法是异步的吗?它会在iPhone中缓存图像吗?
2 -如何裁剪/调整此图像的大小?我在URL中有一个800x600的图像,但我的UIImageView是400x400,我只想在显示之前裁剪url图像,相同的比例,如600x600(不需要400x400,只是相同的比例).喜欢facebook app.
Rob*_*Rob 17
调整大小已在其他地方得到解答,但对于您的第一个问题:
这个方法是异步的吗?
是的,它是异步的.如果要处理图像,可以使用回调块,例如:
[imageView setImageWithURLRequest:request
placeholderImage:nil
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
// do image resize here
// then set image view
imageView.image = image;
}
failure:nil];
Run Code Online (Sandbox Code Playgroud)
然后你问:
它会在iPhone中缓存图像吗?
如果你只是因为性能原因而想要在内存中缓存,那么答案是肯定的.它采用了NSCache(在内存压力下将被清空).顺便说一句,它会将图像缓存为已检索的图像,而不会反映您事后调整后的大小.
如果您希望缓存在持久存储中(即即使您终止应用程序并重新启动它也会持续存在),那么这个问题就不太清楚了.AFNetworking声称通过其使用支持磁盘缓存NSURLCache,但我在使用iOS时遇到了问题.如果您需要持久存储缓存,我可能会建议其他各种UIImageView类别,例如SDWebImage.
无论如何,对于关于缓存的AFNetworking官方专线,我可能会向您推荐AFNetworking FAQ中的缓存讨论.
如果您想要活动指示器视图,您可以:
UIActivityIndicatorView *activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityIndicatorView.center = self.imageView.center;
[self.view addSubview:activityIndicatorView];
[activityIndicatorView startAnimating];
[imageView setImageWithURLRequest:request
placeholderImage:nil
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
[activityIndicatorView removeFromSuperview];
// do image resize here
// then set image view
imageView.image = image;
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
[activityIndicatorView removeFromSuperview];
// do any other error handling you want here
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11687 次 |
| 最近记录: |