說說iOS開發(fā)中使用瀏覽器打開圖片鏈接能瀏覽圖片,但項目中使用SDWebImage卻不顯示的問題

好像這個題目有點長啊,但是這個意思確實是這樣表述的啊,大家理解一下!哈哈哈

首先說說這個問題的來源吧,因為項目中把圖片和視頻上傳到了七牛云,然后后面其他地方就使用后臺返回的七牛云鏈接等等進行顯示,包括視頻縮略圖也是后臺返回的,然后返回的視頻縮略圖鏈接如下樣式:

http://qiniu.****.****.cn/moto_ios_15616109587258.MOV?vframe/jpg/offset/1|imageView2/0/w/720

(*替換成每個人真實的地址即可,本文為了方便隱藏了真實地址)
對應的視頻鏈接:

http://qiniu.****.****.cn/moto_ios_15616109587258.MOV

然后就是這樣的圖片鏈接我出現(xiàn)了使用SDWebImage就是顯示不出來的問題,但是把鏈接復制到瀏覽器中是能正常展示的,說明它確實是圖片!
那我們就從SDWebImage這里開始查起,如下:

[self.logoImgView sd_setImageWithURL:[NSURL URLWithString:[defaults stringForKey:@"userPortraitUri"]] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

      NSLog(@"錯誤信息:%@",error);

}];

從這里可以看到錯誤信息:

SDWebImageErrorDomain Code=1000 "Image url is nil"

很明確就是鏈接都沒有,鏈接為空?。?!但是我們卻明明傳入了URL,見鬼!
和我們有同樣問題的外國友人,或者世界開發(fā)者也有類似的問題,參考鏈接https://stackoverflow.com/questions/24228348/sdwebimage-does-not-show-an-image-although-the-image-exist-remotely-on-the-serve
不過我沒有從這樣的過程中看到一樣的問題,但是有一個回答卻讓我頓悟了一番,如下圖:

關(guān)鍵字樣

這里進行了一次編碼,然后我就想著是不是我這個鏈接也不對,因為它也確實不像我們平時遇見的帶.jpg或者.png后綴的圖片鏈接,所以我就嘗試著寫了第一個代碼,如下:

 NSString *urlStr = @"http://qiniu.****.****.cn/moto_ios_15616109587258.MOV?vframe/jpg/offset/1|imageView2/0/w/720";
 NSString *url = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

這樣子轉(zhuǎn)碼后:

[_picImageView sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:@"pic_youjihua_default"]];

就真的顯示出來了,是不是很神奇!?。」?!不過這個時候還有一個小細節(jié)需要處理一下,Xcode會提醒我們這樣子的,如下圖:

方法警告

不換也是可以使用,但是為了解除這個警告,下面我們還有辦法呢,代碼如下:

NSString *urlStr = @"http://qiniu.****.****.cn/moto_ios_15616109587258.MOV?vframe/jpg/offset/1|imageView2/0/w/720";
NSString *url = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
[_picImageView sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:@"pic_youjihua_default"]];

這樣就不會再有警告啦,同時圖片也顯示出來了!

附:上面警告會涉及一個關(guān)于編碼的問題,這篇文章大致能解釋關(guān)于以前和現(xiàn)在的編碼轉(zhuǎn)換問題,鏈接如下:iOS9之后 ,字符串NSUTF8StringEncoding 編碼與解碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,626評論 1 32
  • 讀豐子愷的文章《從孩子得到的啟示》,當看到四歲的華瞻說他最喜歡的事是逃難的時候,我還真是大大的吃了一驚。可當...
    載馳閱讀 309評論 0 0
  • 你以為我想笑啊,只是為了不罰錢而已 這名收費員叫鄧川,屬于寧杭高速公司。這段錄像是一段評比錄像“每個月,我們都要進...
    劣根Z閱讀 282評論 0 1

友情鏈接更多精彩內(nèi)容