对SDWebImage 进行封装,为了更好的节省用户手机流量,并保证在移动网络下也展示高清图,对使用SDWebImage 下载图片之前进行逻辑处理,根据本地缓存中是否有缓存原始的图片,用户是否打开移动网络下下载原始图,不同状态下的逻辑判断。
新手 -- 大神勿喷。。。
/** * 下载图片(网络状态检测,手机网络下下载高清图) * * @param originalImageUrl 原始图 * @param thumbImageUrl 缩略图 * */ - (void)hp_setImageWithOriginalImage:(NSString *)originalImageUrl ThumbImage:(NSString *)thumbImageUrl placeholderImage:(UIImage *)placeholder { UIImage * bigImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:originalImageUrl]; // 是否有缓存图片 if (bigImage) { [self sd_setImageWithURL:[NSURL URLWithString:bigImage] placeholderImage:placeholder]; } else { AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager]; // WIFI if (mgr.isReachableViaWiFi) { [self sd_setImageWithURL:[NSURL URLWithString:originalImageUrl] placeholderImage:placeholder]; } // WWAN else if (mgr.isReachableViaWWAN) { // 读取用户配置 是否移动网络下下载高清图 isAlwaysDownloadOriginalImage BOOL isAlways = [[NSUserDefaults standardUserDefaults] valueForKey:IsAlwaysDownloadOriginalImage]; if (isAlways) { [self sd_setImageWithURL:[NSURL URLWithString:originalImageUrl] placeholderImage:placeholder]; } else { [self sd_setImageWithURL:[NSURL URLWithString:thumbImageUrl] placeholderImage:placeholder]; } } // 没有网络 else { UIImage *thumbnailImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:thumbImageUrl]; if (thumbnailImage) { // 内存沙盒缓存中有小图 self.image = thumbnailImage; } else { // 处理离线状态,而且有没有缓存时的情况 self.image = placeholder; } } } }