IOSIos@IONIC

SDWebImage - 网络图片缓存

2016-05-03  本文已影响212人  居然是村长

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

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

一般

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

自己判断缓存

        UIImage *memoryImage = [[SDImageCache sharedImageCache] imageFromMemoryCacheForKey:url1];

    if (memoryImage) {
        // do
    }
    UIImage *cacheImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:url1];

    if (cacheImage) {
        // do
    }

清除缓存

    NSInteger imageCacheByte = [[SDImageCache sharedImageCache] getSize];
    NSLog(@"%zi",imageCacheByte);
    
    
    [[SDImageCache sharedImageCache] calculateSizeWithCompletionBlock:^(NSUInteger fileCount, NSUInteger totalSize) {
        NSLog(@"一共%zi个图片,共%fM",fileCount,totalSize/1024./1024.);
    }];
    [[SDImageCache sharedImageCache] clearDisk];// 磁盘
    [[SDImageCache sharedImageCache] clearMemory];// 内存

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

进度下载

    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
                            }
                        }];
    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

上一篇 下一篇

猜你喜欢

热点阅读