美文网首页
SDWebImage 从缓存中获取图片,当缓存中没有图片的时候

SDWebImage 从缓存中获取图片,当缓存中没有图片的时候

作者: 毛毛虫惊碎花容 | 来源:发表于2017-03-10 17:32 被阅读0次

    SDWebImage 从缓存中获取图片,当缓存中没有图片的时候 会从网上获取图片

    UIImage *originalImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:[USER_DEFAULT objectForKey:@"headerImg"]];
    

    userdefalt中的数据是url 也就是存在本地的key

    if (originalImage) {
                [_headImageView setImage:originalImage];
            }
    

    代码示例

    - setItem:(CustomItem *)item
    {
        _item = item;
         // 占位图片
        UIImage *placeholder = [UIImage imageNamed:@"placeholderImage"];
        // 从内存\沙盒缓存中获得原图,
        UIImage *originalImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:item.originalImage];
        if (originalImage) { // 如果内存\沙盒缓存有原图,那么就直接显示原图(不管现在是什么网络状态)
            self.imageView.image = originalImage;
        } else { // 内存\沙盒缓存没有原图
            AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];
            if (mgr.isReachableViaWiFi) { // 在使用Wifi, 下载原图
                [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.originalImage] placeholderImage:placeholder];
            } else if (mgr.isReachableViaWWAN) { // 在使用手机自带网络
                //     用户的配置项假设利用NSUserDefaults存储到了沙盒中
                //    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"alwaysDownloadOriginalImage"];
                //    [[NSUserDefaults standardUserDefaults] synchronize];
    #warning 从沙盒中读取用户的配置项:在3G\4G环境是否仍然下载原图
                BOOL alwaysDownloadOriginalImage = [[NSUserDefaults standardUserDefaults] boolForKey:@"alwaysDownloadOriginalImage"];
                if (alwaysDownloadOriginalImage) { // 下载原图
                    [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.originalImage] placeholderImage:placeholder];
                } else { // 下载小图
                    [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.thumbnailImage] placeholderImage:placeholder];
                }
            } else { // 没有网络
                UIImage *thumbnailImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:item.thumbnailImage];
                if (thumbnailImage) { // 内存\沙盒缓存中有小图
                    self.imageView.image = thumbnailImage;
                } else { // 处理离线状态,而且有没有缓存时的情况
                    self.imageView.image = placeholder;
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:SDWebImage 从缓存中获取图片,当缓存中没有图片的时候

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