封装一下图片下载功能

根据网络情况来加载图片

基本操作思路

  1. 如果是已经下载过原图,缓存下来了,直接从缓存中加载
    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

使用说明:主要根据网络情况来下载图片 下载大图和原图的以及没有网络的情况去加载缓存中的图

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,802评论 25 709
  • SDWebImage托管在github上。https://github.com/rs/SDWebImage 这个类...
    XLsn0w阅读 798评论 0 0
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,080评论 4 61
  • 日久生情的喜悦,如何在岁月中保鲜,这是我们需要思考的。 两个人由陌生到相依相偎,然而共结连理后的恋爱依然需要我们重...
    慕意谦华阅读 139评论 0 0
  • 我一直标榜我已经形成的早起生物钟,但是在考试的压力中,一切都成了泡影。过去的一周我的作息全部都是混乱的,说是因为考...
    灿灿_e560阅读 220评论 1 0

友情链接更多精彩内容