封装一下图片下载功能
根据网络情况来加载图片
基本操作思路
- 如果是已经下载过原图,缓存下来了,直接从缓存中加载
1.1.如果是没有加载过图片,则根据网络情况来加载图片。
2.1如果是Wi-Fi则加载原图,
3.1如果是3g/4g则去加载原图。
3.2不是3g/4g 则去加载缩略图。
2.2如果没有网,查看是否下载过缩略图,缓存下来了,那么显示缩略图,如果没有,则显示占位图。
第一步:添加一个分类
Snip20170408_1.png
第二步:在.h 文件中声明一个方法出来,方便外面调用
Snip20170408_2.png
第三步:在.m文件中实现方法
Snip20170408_3.png
Snip20170408_4.png
代码呈上
注意⚠️ 依赖了SDWebImage AFNetworking这个两个库
在 .h文件中的代码
#import <UIKit/UIKit.h> #import <UIImageView+WebCache.h> @interface UIImageView (LYWDownLoad) - (void)LYW_setOriginImage:(NSString *)originImageURL thumbnailImage:(NSString *)thumbnailImageURL placeholder:(UIImage *)placeholder completed:(SDWebImageCompletionBlock)completedBlock; @end
在 .m文件中的代码
#import "UIImageView+LYWDownLoad.h" #import <AFNetworkReachabilityManager.h> #import <UIImageView+WebCache.h> @implementation UIImageView (LYWDownLoad) - (void)LYW_setOriginImage:(NSString *)originImageURL thumbnailImage:(NSString *)thumbnailImageURL placeholder:(UIImage *)placeholder completed:(SDWebImageCompletionBlock)completedBlock { // 根据网络状态来加载图片 AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager]; // 获得原图(SDWebImage的图片缓存是用图片的url字符串作为key) UIImage *originImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:originImageURL]; if (originImage) { // 原图已经被下载过 [self sd_setImageWithURL:[NSURL URLWithString:originImageURL] placeholderImage:placeholder completed:completedBlock]; } else { // 原图并未下载过 if (mgr.isReachableViaWiFi) { [self sd_setImageWithURL:[NSURL URLWithString:originImageURL] placeholderImage:placeholder completed:completedBlock]; } else if (mgr.isReachableViaWWAN) { // 3G\4G网络下时候要下载原图 BOOL downloadOriginImageWhen3GOr4G = YES; if (downloadOriginImageWhen3GOr4G) { [self sd_setImageWithURL:[NSURL URLWithString:originImageURL] placeholderImage:placeholder completed:completedBlock]; } else { [self sd_setImageWithURL:[NSURL URLWithString:thumbnailImageURL] placeholderImage:placeholder completed:completedBlock]; } } else { // 没有可用网络 UIImage *thumbnailImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:thumbnailImageURL]; if (thumbnailImage) { // 缩略图已经被下载过 [self sd_setImageWithURL:[NSURL URLWithString:thumbnailImageURL] placeholderImage:placeholder completed:completedBlock]; } else { // 没有下载过任何图片 // 占位图片; [self sd_setImageWithURL:nil placeholderImage:placeholder completed:completedBlock]; } } } } @end