说说同一个图片链接URL随着后台显示不同的图片内容

日常开发中我们比较常见的是SDWebImage进行图片的请求和展示,比如比较常用的方法有:

[self.imageView sd_setImageWithURL:[NSURL URLWithString:urlStr]];

以及

[self.imageView sd_setImageWithURL:[NSURL URLWithString:urlStr] placeholderImage:[UIImage imageNamed:@"pic_youjihua_default"]];

而这种如果图片链接的内容,即链接对应的图片不会改变的话,那么这样肯定是没有问题的啊!但是有时候后台是这样的,返回的链接是一样的,但是链接对应的图片却是不一样的,可以用浏览器在不同的时候打开链接进行验证,那么这种情况下我们又该怎么办呢?因为上面的方法已经失效了,下面我们来说说继续在使用SDWebImage的情况下进行实现。

方法一:

 [ self.imageView sd_setImageWithURL:[NSURL URLWithString:urlStr] placeholderImage:[UIImage imageNamed:@"pic_youjihua_default"] options:SDWebImageRefreshCached];

就是直接使用了SDWebImageRefreshCached刷新缓存,这个方法我有段时间成功了,后面也不能实现了,同样也有人成功了,这个有点奇妙啊!

方法二:

继续使用SDWebImage来实现,既然SDWebImage是有缓存的,那么我们在每次对图片进行赋值前都来删除一下它的缓存不就实现了么?
导入头文件:

#import "SDImageCache.h"

然后使用方法如下:

       //对应的图片链接
        NSString *urlStr = @"http://n.****.cn/edu/transform/20160505/pe7k-fxryhhu2274915.png";
        //清除对应链接的图片缓存
        [[SDImageCache sharedImageCache] removeImageForKey:urlStr withCompletion:^{
  
        }];

        [self.imageView sd_setImageWithURL:urlStr placeholderImage:[UIImage imageNamed:@"touxiang"]];

这样的方式就实现了,只是多了一步清除缓存。

方法三:

这个方法就不再使用SDWebImage来实现了,直接使用如下方式:

NSData * data = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:urlStr]];
UIImage *tempImage = [[UIImage alloc]initWithData:data];
self.imageView.image = tempImage;

通过获取NSData的方式更好的解决了这个问题,效果更好,因为这里是不能考虑缓存的,每次都要进行新的请求,至于各位猿爷如何选择就要看各位的了,小蜜蜂抛砖引玉一下,也请各位猿爷赐教更好的方式。
欢迎和我交流,QQ:834537795.(小蜜蜂)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,904评论 1赞 32
  • 今天, 我们一起来到了 世外桃源-普者黑 相信, 你一定会被 水墨田园风景迷到? 它是云南省文山壮族苗族自治州丘北...
    小水的简书阅读 392评论 0赞 0
  • 美好的一天从大鸟原创手机壁纸开始。 点击图片,长按保存,设为壁纸。 设置壁纸时,可以手动调整一下图片,以匹配自己的...
    大鸟8wo阅读 351评论 0赞 12
  • 一副铁骨就是一具皮囊 一具皮囊里已寻不见风骨 峭壁原本是我的人间 而人间从此无海拔 伤口淌不出血 至味中已没有清欢...
    澄默时节阅读 577评论 0赞 3

友情链接更多精彩内容