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