仅WiFi网络下载图片的实现

最近项目中做了一个小功能,抽时间把它实现过程整理下来,以供交流学习:

首先加载图片都会利用SDWebImage强大的控件来加载并自带缓存功能,利用类别来对UIImageView进行方法补充,实际上就是对SDWebImage的再一次封装。

#import "UIImageView+MyImageModel.h"
#import "UIImageView+WebCache.h"
#import "AFNetworking.h"
@implementation UIImageView (MyImageModel)
-(void)my_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)holder
{
    NSString *urlStr = [url absoluteString];
    //读缓存,先从磁盘中或内存中读取
    UIImage *originalImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:urlStr];
    if (originalImage)
    {//已经加载过有缓存,直接显示,无需判断网络状态
        self.image = originalImage;
    }
    else
    {//利用网络监测判断网络
         AFNetworkReachabilityManager *reachability = [AFNetworkReachabilityManager sharedManager];
        if ( reachability.isReachableViaWiFi)
        {//WiFi网络下下载原图
            [self sd_setImageWithURL:url placeholderImage:holder options:SDWebImageRetryFailed | SDWebImageLowPriority];
            
        }
        else if (reachability.isReachableViaWWAN)
        {//手机自带网络
            if (ImageModel)//手机自带网络,
            {//仅WiFi网络下载图片开关打开
            //读内存是否加载过,下面
                [[SDWebImageManager sharedManager] cachedImageExistsForURL:url completion:^(BOOL isInCache) {
                    if (isInCache)
                    {//直接加载,如果在磁盘或内存中存在就继续加载会直接读取,不会有网络请求
                        [self sd_setImageWithURL:url placeholderImage:holder options:SDWebImageRetryFailed | SDWebImageLowPriority];
                    }
                    else
                    {
                        //没加载过占位图
                        self.image = holder;
                    }
                }];
                
            }
            else//非wifi网络也可以下载图片
            {
                [self sd_setImageWithURL:url placeholderImage:holder options:SDWebImageRetryFailed | SDWebImageLowPriority];
            }
            
        }
        else
        {//无网络
            self.image = holder;
            
        }
               
    }
    
}
@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值