美文网首页IOSIos@IONIC
SDWebImage - 网络图片缓存

SDWebImage - 网络图片缓存

作者: 居然是村长 | 来源:发表于2016-05-03 23:58 被阅读212次

https://github.com/rs/SDWebImage
14000 + star

1、对网络图片进行本地缓存,异步加载,优化图片获取必备,大家都说好。
2、首先对 url 图片进行判断本地是否存在,存在直接使用,不存在使用网络图片,并以url为key保存在本地(磁盘,内存)
3、保存磁盘的不清理会一直存在,而保存内存的可能会被系统清楚。

一般

  • 1 最常用
// 一般都只用以下方法,就自动判断是否缓存而选择最优图片获取。
    [imageView sd_setImageWithURL:[NSURL URLWithString:url2]
                 placeholderImage:[UIImage imageNamed:@"placeholderImage"]];
  • 2 button 也可以
    [button sd_setImageWithURL:[NSURL URLWithString:url2]
                      forState:UIControlStateNormal
              placeholderImage:[UIImage imageNamed:@"placeholderImage"]];

自己判断缓存

  • 1 内存中是否存在
        UIImage *memoryImage = [[SDImageCache sharedImageCache] imageFromMemoryCacheForKey:url1];

    if (memoryImage) {
        // do
    }
  • 2 整个缓存是否存在(先检查内存,然后检查磁盘)
    UIImage *cacheImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:url1];

    if (cacheImage) {
        // do
    }

清除缓存

  • 1 获取缓存大小
    NSInteger imageCacheByte = [[SDImageCache sharedImageCache] getSize];
    NSLog(@"%zi",imageCacheByte);
    
    
    [[SDImageCache sharedImageCache] calculateSizeWithCompletionBlock:^(NSUInteger fileCount, NSUInteger totalSize) {
        NSLog(@"一共%zi个图片,共%fM",fileCount,totalSize/1024./1024.);
    }];
  • 2 清理(搞个进度条,不然清理太快了)
    [[SDImageCache sharedImageCache] clearDisk];// 磁盘
    [[SDImageCache sharedImageCache] clearMemory];// 内存

    [[SDImageCache sharedImageCache] removeImageForKey:url1];// 单独清理

进度下载

  • 1 一般下载
    SDWebImageManager *manager = [SDWebImageManager sharedManager];
    [manager downloadImageWithURL:[NSURL URLWithString:url2]
                          options:0
                         progress:^(NSInteger receivedSize, NSInteger expectedSize) {
                             // 如果有下载进度,可以跟踪
                             NSLog(@"%zi,%zi",receivedSize,expectedSize);
                             
                         } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
                            if (image) {
                                // do something with image
                            }
                        }];
  • 2 异步下载
    SDWebImageDownloader *downloader = [SDWebImageDownloader sharedDownloader];
    [downloader downloadImageWithURL:[NSURL URLWithString:url2]
                             options:0
                            progress:^(NSInteger receivedSize, NSInteger expectedSize) {
                                // progression tracking code
                            }
                           completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
                               if (image && finished) {
                                   // do something with image
                               }
                           }];

强制刷新本地缓存

[imageView sd_setImageWithURL:[NSURL URLWithString:@"https://graph.facebook.com/olivier.poitrey/picture"]
                 placeholderImage:[UIImage imageNamed:@"avatar-placeholder.png"]
                          options:SDWebImageRefreshCached];

1

相关文章

  • 解读SDWebImage

    SDWebImage是一个功能强大的图片缓存框架,可以实现网络图片加载和缓存。那么SDWebImage的缓存机制是...

  • #最后一次第三方框架分享

    1.图像获取 SDWebImage– SDWebImage网络图片获取及缓存处理。 Kingfisher–纯Swi...

  • 项目中用到的第三方(swift为主)

    网络请求AFNetworking, Alamofire 图片缓存SDWebImage 数据存储SQLite.swi...

  • iOS编程之缓存清除以及文件操作等

    1,SDWebImage图片缓存 这里简单讲解以下SDWebImage图片缓存大小计算以及清理缓存的方法 获取图片...

  • 常用第三方库

    AFNetworking :用于网络数据请求。 SDWebImage:图片异步加载和缓存。 ReactiveCoc...

  • iOS面试(五)-网络及第三方框架

    目录: 网络 AFNetworking SDWebImage:异步图片加载库+缓存 1. 网络 使用TCP/IP四...

  • iOS-SDWebImage

    网络图片加载框架:SDWebImage 支持从网络中下载且缓存图片,并设置图片到对应的 UIImageView 控...

  • SDWebImage原理

    SDWebImage SDWebImage原理 核心类SDWebImageManager介绍 图片加载 图片缓存 ...

  • iOS开发常用库

    框架类 网络AFNetworking轻量级网络库。 网络-图像SDWebImage支持缓存的异步图片加载库。 图像...

  • SDWebImage缓存原理

    SDWebImage是一个功能很强大的缓存网络图片的框架。框架实现了异步加载网络图片、自动缓存图片数据等功能。以U...

网友评论

  • feng_dev:村长 ,我想知道你们 平时 就是 那种切换头像的
    是 在 cell 里面 放一个 imageview 添加 手势
    还是 放 一个button
    或者 直接 在 cell 的点击事件 里面 弹出 系统的 相册
    居然是村长:@枫子哥 好像是哦,人家都还push了。跟设计有关吧。我这边几个都不一样。:disappointed_relieved:
    feng_dev:@说了是村长 微信的 不就在 cell 里面 吗 ?
    感觉好多app 都是 这样的啊
    居然是村长:@枫子哥 看cell里是啥吧。一般头像不应该在cell里啊。

本文标题:SDWebImage - 网络图片缓存

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