SDWebImage
该框架的主要作用就是:一个异步下载图片并且支持缓存UIImageView分类
1、该框架中最常用到的方法就是:(不仅可以加载图片,也可以对Button进行加载)
[self.imageView sd_setImageWithURL:[NSURL URLWithString:@“url”] placeholderImage:[UIImage imageNamed:@“图片.png”]];//占位图
2、该框架的搭建方式:
UIImageView+WebCache 和 UIButton+WebCache 直接为表层的 UIKit 框架提供接口, 而 SDWebImageManger 负责处理和协调 SDWebImageDownloader 和 SDWebImageCache. 并与 UIKit 层进行交互, 而底层的一些类为更高层级的抽象提供支持.
该方法的实现:是UIImageView+WebCache中的核心方法
-(void)sd_setImageViewWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder
{
[self sd_setImageViewWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil];
}
该框架中所有操作实际上都是通过一个operationDictionary来管理,这个字典实际上是动态的添加到UIView上的属性,主要是因为这个operationDictionary需要在UIButton和UIImageView上重用,所以需要添加它到根类上面。
[self sd_cancelImageLoadOperationWithKey:@“UIImageViewImageLoad”];//该方法主要保证没有当前正在进行的异步下载操作,不会和即将进行的操作发生冲突。该方法会使当前UIImageView中的所有操作都被cancel.并且不会影响之后的下载操作。
3、占位图的实现:
If( !( options & SDWebImageDelayPlaceholder))
{
Self.image = placeholder;
}
解释:如果传入的options中没有SDWebImageDelayPlaceholder(默认情况下options == 0 )那么就会给UIImageView添加一个临时的Image.
4、获取图片:
if(url)//检测传入的url是否为空,如果是非空那么一个全局的SDWebImageMangager就会调用下面的方法去获取图片。
[SDWebImageManager.sharedManager downloadImageWithURL:options:progress:completed:];
下载完成后会调用 (SDWebImageCompletionWithFinishedBlock)completedBlock 为 UIImageView.image 赋值, 添加上最终所需要的图片
dispatch_main_sync_safe(^{
if (!wself) return;
if (image) {
<