SDWebImage 是一个比较流行的用于网络图片缓存的第三方类库。这个类库提供了一个支持缓存的图片下载器。为了方便操作者调用,它提供了很多 UI 组件的类别,例如:UIImageView、UIButton、等等。
使用方式很简单:
1、CocoaPods 安装:
platform :ios, '7.0'
pod 'SDWebImage', '~> 4.0'
2、直接把文件夹拖进工程目录:
在使用时只需要引入头文件,就可以使用相关 API 进行网路图片缓存了。例如:
[imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
工程目录如下:
SDWebImage
|—-SDWebImageCompat
处理不同平台(iOS、TV、OS、Watch)宏,以及根据文件名@2x、@3x进行图片处理和缩放
|—-SDWebImageOperation.h
添加cancel的delegate
+—-Cache
|——–SDImageCache
主要处理缓存逻辑,重点集中在:NSCache(Memory)、Disk读写、清理Old File
|——–SDImageCacheConfig
配置缓存参数:是否压缩、iCloud、InMemory、ReadingOption、时间和CacheSize
+—-Downloader
|——–SDWebImageDownloaderOperation
主要提供下载的Operation操作
|——–SDWebImageDownloader
提供下载管理入口
+—-Utils
|——–SDWebImageManager
提供外层管理cache和download入口
|——–SDWebImagePrefetcher
预处理获取Image,主要应用预加载的地方
+—-Categories
|——–NSData+ImageContentType
提供类型判断和ImageIO类型转换
|——–UIImage+GIF
Data转UIImage(GIF)扩展
|——–UIImage+MultiFormat
提供BitMap或者未知类型的Data转UIImage扩展
|——–UIImage+WebP
Data转WebP扩展
|——–UIImage+ForceDecode
解压操作
|——–UIView+WebCacheOperation
提供顶层关于取消和下载记录的扩展
+—-Decoder
|——–SDWebImageCodersManager
整体Coders的入口,提供是否可Coder和Coder转发
|——–SDWebImageCoder
主要说明Coder Delegate 需要实现的接口
|——–SDWebImageImageIOCoder
PNG/JPEG的Encode和解压操作
|——–SDWebImageGIFCoder
GIF的Coder操作
|——–SDWebImageWebPCoder
WebP的Coder操作
|——–SDWebImageFrame
辅助类,主要在GIF等动态图使用
|——–SDWebImageCoderHelper
辅助类,包括方向、Gif图合成等
组件结构图(来自网络):
SDWebImage 工程架构UML图如下: