根据网络环境来加载图片

网络环境wifi使用高清图,流量使用缩略图

一进来,wifi环境,通过sd下载大图,存入沙盒,当再次使用切换为流量时,下载小图,这样是不合理的,既然曾经下载过,不管是流量还是wifi还是断网,沙盒中有直接取出来就行了,所以首先检测沙盒中有没有东西

sd的沙盒对象中,一个url对应一个image,key就是url

1.在AppDelegate.m中开启监控网络

导入AFNetworking.h

[[AFNetworkReachabilityManager sharedManager] startMonitoring];

2.

UIImage *placeholder = nil;

    //根据网络状态来加载数据

    AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];

    //从沙盒中获得大图

    UIImage *originImage = [[SDImageCache sharedImageCache] imageFromCacheForKey:topic.image1];

    if (originImage) {//原图已经下载过

        self.imageView.image = originImage;

    }else{//原图未被下载过

        if (mgr.isReachableViaWiFi) {

            [self.imageView sd_setImageWithURL:[NSURL URLWithString:topic.image1] placeholderImage:placeholder];

        }else if(mgr.isReachableViaWWAN){

            [self.imageView sd_setImageWithURL:[NSURL URLWithString:topic.image0] placeholderImage:placeholder];

        }else{

            //没有网络 显示占位图片

            UIImage *thumbnailImage = [[SDImageCache sharedImageCache] imageFromCacheForKey:topic.image0];

            if (thumbnailImage) {//缩略图已经被下载过

                self.imageView.image = thumbnailImage;

            }else{

                //没有下载过任何图片

                //占位图片

                self.imageView.image = placeholder;

            }

        }

    }

由于这个功能经常要用,所以给它抽取成分类的方法,给UIImageView增加一个方法,先要判断好这个方法是干嘛的,给谁用的,给谁用就设置为谁的分类,因为这个分类的对象会调用这个方法

这个方法是用来给imageView设置图片的

你可能感兴趣的:(根据网络环境来加载图片)