日常開發(fā)中我們比較常見的是SDWebImage進(jìn)行圖片的請求和展示,比如比較常用的方法有:
[self.imageView sd_setImageWithURL:[NSURL URLWithString:urlStr]];
以及
[self.imageView sd_setImageWithURL:[NSURL URLWithString:urlStr] placeholderImage:[UIImage imageNamed:@"pic_youjihua_default"]];
而這種如果圖片鏈接的內(nèi)容但金,即鏈接對應(yīng)的圖片不會改變的話钱磅,那么這樣肯定是沒有問題的霸浼摺!但是有時候后臺是這樣的,返回的鏈接是一樣的,但是鏈接對應(yīng)的圖片卻是不一樣的吠谢,可以用瀏覽器在不同的時候打開鏈接進(jìn)行驗(yàn)證,那么這種情況下我們又該怎么辦呢诗茎?因?yàn)樯厦娴姆椒ㄒ呀?jīng)失效了工坊,下面我們來說說繼續(xù)在使用SDWebImage的情況下進(jìn)行實(shí)現(xiàn)。
方法一:
[ self.imageView sd_setImageWithURL:[NSURL URLWithString:urlStr] placeholderImage:[UIImage imageNamed:@"pic_youjihua_default"] options:SDWebImageRefreshCached];
就是直接使用了SDWebImageRefreshCached刷新緩存敢订,這個方法我有段時間成功了王污,后面也不能實(shí)現(xiàn)了,同樣也有人成功了楚午,這個有點(diǎn)奇妙罢哑搿!
方法二:
繼續(xù)使用SDWebImage來實(shí)現(xiàn)矾柜,既然SDWebImage是有緩存的阱驾,那么我們在每次對圖片進(jìn)行賦值前都來刪除一下它的緩存不就實(shí)現(xiàn)了么就谜?
導(dǎo)入頭文件:
#import "SDImageCache.h"
然后使用方法如下:
//對應(yīng)的圖片鏈接
NSString *urlStr = @"http://n.****.cn/edu/transform/20160505/pe7k-fxryhhu2274915.png";
//清除對應(yīng)鏈接的圖片緩存
[[SDImageCache sharedImageCache] removeImageForKey:urlStr withCompletion:^{
}];
[self.imageView sd_setImageWithURL:urlStr placeholderImage:[UIImage imageNamed:@"touxiang"]];
這樣的方式就實(shí)現(xiàn)了,只是多了一步清除緩存里覆。
方法三:
這個方法就不再使用SDWebImage來實(shí)現(xiàn)了丧荐,直接使用如下方式:
NSData * data = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:urlStr]];
UIImage *tempImage = [[UIImage alloc]initWithData:data];
self.imageView.image = tempImage;
通過獲取NSData的方式更好的解決了這個問題,效果更好喧枷,因?yàn)檫@里是不能考慮緩存的虹统,每次都要進(jìn)行新的請求,至于各位猿爺如何選擇就要看各位的了割去,小蜜蜂拋磚引玉一下窟却,也請各位猿爺賜教更好的方式。
歡迎和我交流呻逆,QQ:834537795.(小蜜蜂)