iOS开发------实现图片下载缓存到本地

      在开发过程中很多人都会使用SDWebImage来进行网络图片的缓存,说实话,这个第三方也确实好用,但依照本人的性格,还是一直在想做一版自己的本地缓存,比如下载的图片存到本地,下次再有相同的图片需要加载,就不用再花冤枉流量来下载了,这次的尝试虽然相比SDWebImage会差很远,但是这只是一个开始,毕竟本人的项目经验有限,但会在以后的学习中不断的对这个代码进行优化,毕竟自己的代码可控性要比第三方大得多。


最新代码的GitHub:https://github.com/YRunIntoLove/YWebImage


      基本的思路就是:第一次加载图片是要下载的,在下载完成后,存到沙盒目录一个固定的文件夹(YWebImageFile)下,下次再有相同的url图片的时候,首先会从这个文件夹中进行查找,如果存在,从文件中取出,如果不存在,那就下载,待下载完毕后存到该文件夹下,因为这个类是想用在公司的项目中,用的语言就不再是Swfit

      从网上查找高清大图,因为这样子才会观察得到一个过程,百度就好,大家都懂得,这里是楼主测试用的图片地址,下面测试的url是http://c.hiphotos.baidu.com/zhidao/pic/item/730e0cf3d7ca7bcb48f80cb9bc096b63f724a8a1.jpg,测试url的第三个。

static NSString * testImageURL1 = @"http://www.bz55.com/uploads/allimg/150417/139-15041G02614.jpg";
static NSString * testImageURL2 = @"http://a.hiphotos.baidu.com/zhidao/pic/item/faedab64034f78f0b7111ba67b310a55b3191c48.jpg";
static NSString * testImageURL3 = @"http://c.hiphotos.baidu.com/zhidao/pic/item/730e0cf3d7ca7bcb48f80cb9bc096b63f724a8a1.jpg";

因为要看到一个过程,所以最好有一个手动的开始点,所以加载图片的代码就写在了一个按钮的点击事件里面了,这样最好控嘛

- (IBAction)startLoadImage:(id)sender
{
    
    //默认初始化label为本地
    self.label.text = @"本地图片!";
    
    NSString * imageURL = self.inputView.text;
    
    //可看进度的方法
    [self.imageView yw_setImageWithUrl:imageURL withProgressHandle:^(CGFloat didFinish, CGFloat didFinishTotal, CGFloat Total) {
        
        //更改Label
        NSString * progress = [NSString stringWithFormat:@"%.1f%%",(didFinishTotal * 1.0 / Total) * 100.0];
        self.label.text = progress;
        
    }];
}


加载效果图:

                                                                                              


          不知道为啥,今天的网速格外的好,从打印的效果来看表示本地已经存在了,不信还可以看看此文件下已经有了缓存文件,如果加载出现了App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.的打印提示,可以参考之前的一篇博客App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure 解决


                                             

文件中的缓存:



     效果图完毕,来说说原理吧,其实原理前面也说了,就是首先根据url来判断本地是否已经存在UIImage对象,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值