SDWebImage
做应用难免要遇到图片存储的问题, 在 Android
有 Glide
这样的图片加载框架, 设置好图片的 URL
, 它帮助你异步非阻塞式地从网络加载图片; 还可以进行缓存, 即下一次用相同的 URL
加载图片时, 如果本地已经有缓存了, 那么直接加载本地的图片, 避免了进行耗时的网络访问请求.
iOS
也有类似的框架, 就是 SDWebImage
, 其设置图片的流程大致如下:
优点
- 提供了一个
UIImageView
的category
用来加载网络图片并且对网络图片的缓存进行管理 - 采用异步方式来下载网络图片
- 采用异步方式,使用
memory+disk
来缓存网络图片,自动管理缓存。 - 支持
GIF
动画 - 支持
WebP
格式 - 同一个
URL
的网络图片不会被重复下载 - 失效的
URL
不会被无限重试 - 耗时操作都在子线程,确保不会阻塞主线程
- 使用
GCD
和ARC
- 支持
Arm64
通过CocoaPods安装
打开你的
Podfile
, 输入pod 'SDWebImage'
在终端执行
pod install
基本使用
引入头文件
1 | #import <SDWebImage/UIImageView+WebCache.h> |
通过url加载图片
1 | [imageView sd_setImageWithURL:[NSURL URLWithString:@""] |
测试一下加载本地服务器的静态图片:
成功加载的回调
1 | [cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] |
获取图片的缓存大小
1 | [[SDImageCache sharedImageCache] totalDiskSize]; |
测试代码:
1 | SDImageCache * cache = [SDImageCache sharedImageCache]; |
清除内存/磁盘缓存
1 | // 清除内存缓存 |
仅供参考
1和2有些过时了, 上面的函数是自己看文档找到的
SDWebImage 解读
SDWebImage的使用
官方文档SDImageCache(im)totalDiskSize)