美文网首页
SDWebImage

SDWebImage

作者: Go丶Pikachu | 来源:发表于2016-09-28 15:47 被阅读0次

一、SDWebImage简介

话不多说,先给上github的地址。

github地址:https://github.com/rs/SDWebImage
中文注释版:链接: https://pan.baidu.com/s/1o8gxYfK 密码: f8vg

关于SDWebImage是什么,github都讲得非常清楚了。当然,如果你英语跟我一样差的话,你可以看看我对SDWebImage的理解。
鄙人的理解就是:

这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。

二、SDWebImage内部结构

内部结构图

主要是分为两个部分,一部分对图片进行缓存,一部分下载图片。

三、SDWebImage基本使用

1.设置imageView的图片

[cell.imageView sd_setImageWithURL:[NSURL URLWithString:app.icon] placeholderImage:[UIImage imageNamed:@"123"]];

第一个参数是网络获取到的图片,placeholderImage这个参数是设置一个预设的图片,也就是当你的网络图片没有的时候,就会使用这个图片,这个还是比较常用的。

2.设置图片并计算下载进度

/*
     第一个参数:要下载图片的地址
     第二个参数:展位图片
     第三个参数:下载图片的策略
     第四个参数:progress是一个block,监听下载进度
        receivedSize:已经下载的大小
        expectedSize:图片大小
     第五个参数:下载完成后调用
     */
    [cell.imageView sd_setImageWithURL:[NSURL URLWithString:app.icon] placeholderImage:[UIImage imageNamed:@"123"] options:kNilOptions progress:^(NSInteger receivedSize, NSInteger expectedSize) {
        NSLog(@"%.2f",1.0 *receivedSize/ expectedSize);
        
    } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        NSLog(@"已经完成了");
    }];

3.系统级内存警告如何处理


 //1.取消当前所有任务
    [[SDWebImageManager sharedManager] cancelAll];
    
    //2.清空缓存
//    缓存周期:7天
//    cleanDisk:删除过期缓存,计算当前缓存文件大大小,如果大于设置的最大缓存,那么会继续删除文件,按照创建时间的远近来删除
    
//    clearDisk:删除文件夹,重新创建
    [[SDWebImageManager sharedManager].imageCache clearDisk];

这里最重要的是,SDWebImage会自动帮我们清楚缓存,周期是7天。当然我们也可以自己手动清除,上面的代码就是清除缓存的。

假如你想获取系统现在有多少缓存你可以使用下面这句代码


[[SDWebImageManager sharedManager].imageCache getSize];

当然获取到的缓存大小的单位是b,你可以自己转换

4.如何判断当前图片类型

+ (NSString *)sd_contentTypeForImageData:(NSData *)data;

相关文章

网友评论

      本文标题:SDWebImage

      本文链接:https://www.haomeiwen.com/subject/ijnhyttx.html