UIImageView+SDWebImage.h
#importtypedef void(^DownloadImageSuccessBlock)(UIImage *image);typedef void(^DownloadImageFailedBlock)(NSError *error);typedef void(^DownloadImageProgressBlock)(CGFloat progress);@interface UIImageView (SDWebImage)/** 异步加载图片 @param url 图片地址 @param imageName 占位图片名 */- (void)downloadImage:(NSString *)url placeholder:(NSString *)imageName;/** 异步加载图片,可以监听下载进度,成功或失败 @param url 图片地址 @param imageName 占位图片名 @param success 下载成功 @param failed 下载失败 @param progress 下载进度 */- (void)downloadImage:(NSString *)url placeholder:(NSString *)imageName success:(DownloadImageSuccessBlock)success failed:(DownloadImageFailedBlock)failed progress:(DownloadImageProgressBlock)progress;@end
UIImageView+SDWebImage.m
#import "UIImageView+SDWebImage.h"#import "UIImageView+WebCache.h"@implementation UIImageView (SDWebImage)- (void)downloadImage:(NSString *)url placeholder:(NSString *)imageName { [self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:imageName] options:SDWebImageRetryFailed | SDWebImageLowPriority];}- (void)downloadImage:(NSString *)url placeholder:(NSString *)imageName success:(DownloadImageSuccessBlock)success failed:(DownloadImageFailedBlock)failed progress:(DownloadImageProgressBlock)progress { [self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:imageName] options:SDWebImageRetryFailed | SDWebImageLowPriority progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) { progress(receivedSize * 1.0 / expectedSize); } completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) { if (error) { failed(error); } else { self.image = image; success(image); } }]; }@end