zoukankan      html  css  js  c++  java
  • 第二十八篇、自定义的UITableViewCell上有图片需要显示,要求网络网络状态为WiFi时,显示图片高清图;网络状态为蜂窝移动网络时,显示图片缩略图

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

    2)许多应用设置模块带有一个功能:移动网络环境下仍然显示高清图。这个功能其实是将设置记录在沙盒中

    3)当用户处于离线状态时候,无法合理处理业务。

    - setItem:(CustomItem *)item
    {
        _item = item;
      // 占位图片
        UIImage *placeholder = [UIImage imageNamed:@"placeholderImage"];
        // 从内存沙盒缓存中获得原图
        UIImage *originalImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:item.originalImage];
        if (originalImage) { // 如果内存沙盒缓存有原图,那么就直接显示原图(不管现在是什么网络状态)
            [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.originalImage] placeholderImage:placeholder];
        } else { // 内存沙盒缓存没有原图
            AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];
            if (mgr.isReachableViaWiFi) { // 在使用Wifi, 下载原图
                [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.originalImage] placeholderImage:placeholder];
            } else if (mgr.isReachableViaWWAN) { // 在使用手机自带网络
                //     用户的配置项假设利用NSUserDefaults存储到了沙盒中
                //    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"alwaysDownloadOriginalImage"];
                //    [[NSUserDefaults standardUserDefaults] synchronize];
    #warning 从沙盒中读取用户的配置项:在3G4G环境是否仍然下载原图
                BOOL alwaysDownloadOriginalImage = [[NSUserDefaults standardUserDefaults] boolForKey:@"alwaysDownloadOriginalImage"];
                if (alwaysDownloadOriginalImage) { // 下载原图
                    [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.originalImage] placeholderImage:placeholder];
                } else { // 下载小图
                    [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.thumbnailImage] placeholderImage:placeholder];
                }
            } else { // 没有网络
                UIImage *thumbnailImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:item.thumbnailImage];
                if (thumbnailImage) { // 内存沙盒缓存中有小图
                    [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.thumbnailImage] placeholderImage:placeholder];
                } else {
                    [self.imageView sd_setImageWithURL:nil placeholderImage:placeholder];
                }
            }
        }
    }
  • 相关阅读:
    机器学习(深度学习)
    机器学习(六)
    机器学习一-三
    Leetcode 90. 子集 II dfs
    Leetcode 83. 删除排序链表中的重复元素 链表操作
    《算法竞赛进阶指南》 第二章 Acwing 139. 回文子串的最大长度
    LeetCode 80. 删除有序数组中的重复项 II 双指针
    LeetCode 86 分割链表
    《算法竞赛进阶指南》 第二章 Acwing 138. 兔子与兔子 哈希
    《算法竞赛进阶指南》 第二章 Acwing 137. 雪花雪花雪花 哈希
  • 原文地址:https://www.cnblogs.com/HJQ2016/p/5879446.html
Copyright © 2011-2022 走看看