作用
1、为Button、ImageView添加分类方法加载图片
2、支持WebP和GIF格式动画
3、使用异步线程加载图片,自动管理缓存(根据URL生成唯一的key来检索缓存)
组织架构
文章图片
image
SDWebImageManager是单例使用的,分别维护了一个SDImageCache实例和一个SDWebImageDownloader实例。 SDWebImageManager会首先在memory以及disk的cache中查找是否下载过相同的照片,即调用imageCache的方法。
如果在缓存中找到图片,直接调用completedBlock,第一个参数是缓存的image。
如果没有在缓存中找到图片,或者不管是否找到图片,只要operation有SDWebImageRefreshCached标记,那么若SDWebImageManagerDelegate的shouldDownloadImageForURL方法返回true,即允许下载时,都使用 imageDownloader 下载,并将下载好的图片根据Url生成唯一key放到cache中
文章图片
image
SDWebImageDownloader负责维持图片的下载队列;
SDWebImageDownloaderOperation负责真正的图片下载请求;
SDImageCache负责图片的缓存;
SDWebImageManager是总的管理类,维护了一个SDWebImageDownloader实例和一个SDImageCache实例,是下载与缓存的桥梁;
SDWebImageDecoder负责图片的解压缩;
SDWebImagePrefetcher负责图片的预取;
UIImageView+WebCache和其他的扩展都是与用户直接打交道的。
文件类分析
1、SDImageCache
设置缓存的类型,方式,路径等 2、SDWebImageCompat
兼容类,定义了很多宏和一个转换图片的方法 3、SDWebImageDecoder
解码器,让图片色彩转换(涉及到color space) 4、SDWebImageDownloader
下载器,设置下载相关,要用到SDWebImageDownloaderOperation 5、SDWebImageDownloaderOperation
下载器的操作 6、SDWebImageManager
管理图片下载,取消操作,判断url是否已缓存等 7、SDWebImageOperation
图片操作,后面很多类都要用到 8、SDWebImagePrefetcher
预抓取器,预先下载urls中的图片 9、UIButton+WebCache
按钮图片的缓存 10、UIImage+GIF
缓存gif 11、NSData+ImageContentType
判断图片的类型,png/jpeg/gif/webp 12、UIImage+MultiFormat
缓存多种格式的图片,要用到NSData+ImageContentType的判断图片类型方法和UIImage+GIF的判断是否为gif图片方法,以及ImageIO里面的方法 13、UIImageView+HighlightedWebCache
缓存高亮图片 14、UIImageView+WebCache
主要用到这个,加载及缓存UIImageView的图片 15、UIView+WebCacheOperation
缓存的操作,有缓存,取消操作,移除缓存
SDWebImageDownloader