一、SDWebImage简介
话不多说,先给上github的地址。
github地址:https://github.com/rs/SDWebImage
中文注释版:链接: https://pan.baidu.com/s/1o8gxYfK 密码: f8vg
关于SDWebImage是什么,github都讲得非常清楚了。当然,如果你英语跟我一样差的话,你可以看看我对SDWebImage的理解。
鄙人的理解就是:
这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。
二、SDWebImage内部结构
主要是分为两个部分,一部分对图片进行缓存,一部分下载图片。
三、SDWebImage基本使用
1.设置imageView的图片
[cell.imageView sd_setImageWithURL:[NSURL URLWithString:app.icon] placeholderImage:[UIImage imageNamed:@"123"]];
第一个参数是网络获取到的图片,placeholderImage这个参数是设置一个预设的图片,也就是当你的网络图片没有的时候,就会使用这个图片,这个还是比较常用的。
2.设置图片并计算下载进度
/*
第一个参数:要下载图片的地址
第二个参数:展位图片
第三个参数:下载图片的策略
第四个参数:progress是一个block,监听下载进度
receivedSize:已经下载的大小
expectedSize:图片大小
第五个参数:下载完成后调用
*/
[cell.imageView sd_setImageWithURL:[NSURL URLWithString:app.icon] placeholderImage:[UIImage imageNamed:@"123"] options:kNilOptions progress:^(NSInteger receivedSize, NSInteger expectedSize) {
NSLog(@"%.2f",1.0 *receivedSize/ expectedSize);
} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
NSLog(@"已经完成了");
}];
3.系统级内存警告如何处理
//1.取消当前所有任务
[[SDWebImageManager sharedManager] cancelAll];
//2.清空缓存
// 缓存周期:7天
// cleanDisk:删除过期缓存,计算当前缓存文件大大小,如果大于设置的最大缓存,那么会继续删除文件,按照创建时间的远近来删除
// clearDisk:删除文件夹,重新创建
[[SDWebImageManager sharedManager].imageCache clearDisk];
这里最重要的是,SDWebImage会自动帮我们清楚缓存,周期是7天。当然我们也可以自己手动清除,上面的代码就是清除缓存的。
假如你想获取系统现在有多少缓存你可以使用下面这句代码
[[SDWebImageManager sharedManager].imageCache getSize];
当然获取到的缓存大小的单位是b,你可以自己转换
4.如何判断当前图片类型
+ (NSString *)sd_contentTypeForImageData:(NSData *)data;