对UIImageView+WebCache的封装
2024-10-18 02:28:28
UIImageView+SDWebImage.h
#import <UIKit/UIKit.h> typedef 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
最新文章
- 快速Android开发系列通信篇之EventBus
- 前端学HTTP之URL
- call,apply学习小结
- python高级之装饰器
- vuejs里封装的和IOS,Android通信模块
- js处理url参数
- Codeforces Round #385 //再遇状压
- C#之桶中取黑白球问题
- linux下c语言实现计算磁盘剩余空间
- mybatis系列-04-mybatis开发dao的方法
- java实现.net中的枚举
- 大型系统OA--需求
- mac上charels抓包工具使用技巧
- 自定义Filter服务
- win7 tomcat
- C# 存储过程使用方法
- 数组的map方法
- Git基础-打标签
- 为什么Java字符串是不可变对象?
- Centos系统下Lamp环境的快速搭建(超详细)