ios源代码分析--SDWebImage

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) {

<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值