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

  

SDWebImage -- 封装 (网络状态检测,是否打开手机网络下下载高清图设置)的更多相关文章

  1. 第二十八篇、自定义的UITableViewCell上有图片需要显示,要求网络网络状态为WiFi时,显示图片高清图;网络状态为蜂窝移动网络时,显示图片缩略图

    1)SDWebImage会自动帮助开发者缓存图片(包括内存缓存,沙盒缓存),所以我们需要设置用户在WiFi环境下下载的高清图,下次在蜂窝网络状态下打开应用也应显示高清图,而不是去下载缩略图. 2)许多 ...

  2. Phonegap学习点滴(2) -- 网络状态检测

    Phonegap学习点滴(2) -- 网络状态检测  http://blog.csdn.net/x251808026/article/details/16992943 方法一:在MainActivit ...

  3. iOS 检测网络状态 自动判断 认为提示网络改变

    检测网络状态 在网络应用中,需要对用户设备的网络状态进行实时监控,目的是让用户了解自己的网络状态,防止一些误会(比如怪应用无能)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验WIFI\3G ...

  4. AFN网络状态的时时监控以及网络的判断、

    //3.判断网络状况    AFNetworkReachabilityManager *netManager = [AFNetworkReachabilityManager sharedManager ...

  5. 微信中扫描二维码自动打开手机系统默认浏览器下载APP(APK)

    很多朋友问我怎么解决微信内点击链接或扫描二维码可以直接跳出微信在外部浏览器打开网页链接,其实这并不难,只要我们实现微信跳转功能即可.下面给大家介绍这个功能 功能目的 生成微信跳转链接,实现微信内置浏览 ...

  6. Android 网络状态检测

    package com.example.administrator.yunstore.net; import android.app.AlertDialog; import android.conte ...

  7. wp检测是否是手机网络还是wifi网络

    原文发布时间为:2013-06-22 -- 来源于本人的百度文章 [由搬家工具导入] ),newNameResolutionCallback(handle =>{NetworkInterface ...

  8. IOS-SDWebImage根据网络状态加载图片

    iOS开发-你真的会用SDWebImage? 2016-05-17 hosea_zhou 有意思啊 原创作者:hosea_zhou 原文地址:http://www.jianshu.com/p/dabc ...

  9. iOS开发系列-网络状态监控

    概述 在网络应用中,需要对用户设别的网络状态进行实时监控,可以让用户了解自己的网络状态出现网络问题提示用户. 一般在网络状态不好的场景下需要做一些处理比如: WIFT/3G/4G网络:自动下载高清图. ...

随机推荐

  1. centos6.8 yum安装mysql 5.6

    一.检查系统是否安装其他版本的MYSQL数据 #yum list installed | grep mysql #yum -y remove mysql-libs.x86_64 二.安装及配置 # w ...

  2. mysql批量删除报1064原因

    DELETE FROM table_name  t where t......; 报1064 错误,原因MySQL 中delete 语句不能给表名起别名. 另外.如果记录不存在,delete from ...

  3. 字符串常用方法总结与StringBuffer基础

    字符串 基本特性 final:字符串被修饰为final,是不能被继承的. immutable:字符串是不可改变的,例如创建了一个字符串对象,就不可改变它,即不能进行增删查改其中的字符.一旦创建好这个字 ...

  4. [USACO09DEC]牛收费路径Cow Toll Paths(floyd、加路径上最大点权值的最短路径)

    https://www.luogu.org/problem/P2966 题目描述 Like everyone else, FJ is always thinking up ways to increa ...

  5. iTOP4412开发板-使用buildroot搭建最简单的linux

    本文档介绍的是使用buildroot搭建最简单的linux文件系统,Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfi ...

  6. 39)PHP,选取数据库中的两列

    首先是我的文件关系: 我的b.php是主php文件,BBB.php是配置文件,login.html是显示文件, b.php文件代码: <?php /** * Created by PhpStor ...

  7. CentOS-DHCP服务搭建

    title date tags layout CentOS6.5 DHCP服务器搭建 2018-08-26 Centos6.5服务器搭建 post 1.安装dhcp软件包 yum install -y ...

  8. numpy矩阵运算--矩阵乘法

    1)元素对应相乘,使用 multiply 函数或 * 运算符来实现 a = np.array([2,2,2])b = np.array([3,3,3]) c1 = a*a c1 array([4, 4 ...

  9. org.apache.http.NoHttpResponseException

    org.apache.http.NoHttpResponseException 异常: org.apache.http.NoHttpResponseException: The target serv ...

  10. LeetCode Day 1

    目录 1.TwoSum 2.AddTwoNumbers 4.FindMedianSortedArrays 1.TwoSum 给定一个整数数组nums和一个目标值 target,请你在该数组中找出和为目 ...