说明 :
UIImageView+AFNetworking 是AFNetworking中一个实现图片异步加载的类, 它是为系统中的UIImageView类添加的类目(Category), 这个类目中的方法为远程异步加载图片功能提供支持.
本文主要是针对UIImageView+AFNetworking的一些使用方法和在应用时需要注意的地方进行归纳, 供大家参考和自己学习.
程序代码中的 urlStr 和 placeholderImage 以自己工程中为准, 本文中使用MRC进行内存管理.
文章中尽量不使用或少使用封装, 目的是让大家清楚为了实现功能所需要的官方核心API是哪些(如果使用封装, 会在封装外面加以注释)
此文章由@河马流星锤编写, 经@春雨, @Scott 审核, 若转载此文章请注明出处和作者.
UIImageView+AFNetworking 的创建方法及相关知识点
核心API
class : UIImageView+AFNetworking
delegate : 无
涉及的API : (AFNetworking的官方API(英文)详见本章结尾)
/** 1. 通过指定的NSURL对象异步加载一个图片 */
- (void)setImageWithURL:(NSURL *)url
/** 通过指定的NSURL对象异步加载一个图片, 并在加载完成之前设置一个占位图片. */
- (void)setImageWithURL:(NSURL *)url
placeholderImage:(UIImage *)placeholderImage
/** 2. 通过指定的NSRequest对象异步加载一个图片, 参数介绍详见本文结尾的API英文注释部分 */
- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest
placeholderImage:(UIImage *)placeholderImage
success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success
failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure
/** 3. 取消请求操作 */
- (void)cancelImageRequestOperation
功能实现
思路
- 导入AFNetworking工程文件.
- 引入UIKit+AFNetworking/UIImageView+AFNetworking.h头文件.
- 下载图片
- 取消图片下载(可选)
(1). 导入AFNetworking工程文件
/** 本文使用的AFNetworking版本为AFNetworking_v2.5.1. */
(2). 引入UIKit+AFNetworking/UIImageView+AFNetworking.h头文件
#import "UIKit+AFNetworking/UIImageView+AFNetworking.h"
/** 说明: UIImageView(AFNetworking)因为是在系统类上增加的类目不需要自己创建, 只要将AFNetworking工程文件拖入工程, 并在要使用页面位置引入头文件即可, 本文介绍使用的是添加到工程的两个文件夹中的文件夹"UIKit+AFNetworking"中, 引入"UIImageView+AFNetworking.h" */
(3). 实现图片异步加载
/* 创建NSURL对象 */
NSURL *urlStr = [NSURL URLWithString:@"http://img2.cache.netease.com/3g/2015/9/18/20150918195439dc844.jpg"];
/* 创建请求对象 */
NSURLRequest *request = [NSURLRequest requestWithURL:urlStr];
/* 创建一个imageView对象 */
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
/**
* 方法一:
* 直接使用url字符串获取照片
* @param urlStr : NSURL对象
*/
[imageView setImageWithURL:urlStr];
/**
* 方法二:
* 直接使用URL(例如:http://img2.cache.netease.com/3g/2015/9/18/20150918195439dc844.jpg)异步加载图片, 照片出现之前添加一个占位的背景照片
* @param urlStr : NSURL对象