關(guān)于OC中動態(tài)調(diào)整圖片高度問題

在iOS開發(fā)中,經(jīng)常碰到需要根據(jù)網(wǎng)絡(luò)圖片的大小動態(tài)調(diào)整高度的情況,目前我能想到的有以下思路:

1.和服務(wù)端商量,接口中直接返回圖片的size

優(yōu)點:可直接食用,安全無毒。

缺點:有的服務(wù)端沒有做好這方面的預(yù)留,需要改挺多代碼,人家未必愿意??。

2.直接根據(jù)鏈接獲取圖片的NSData,并轉(zhuǎn)成UIImage獲取圖片大小,如果有使用SDWebImage,則使用SDWebImage緩存該圖片

優(yōu)點:無需從服務(wù)端接口獲取圖片大小,適用性廣。

缺點:如果圖片較大,會花很多時間在下載圖片上,主線程UI的繪制,如果網(wǎng)速不好的話會影響用戶體驗。

3.使用SDWebImage,先判斷圖片是否在緩存中,如果在緩存中,直接獲取圖片高度,如果不在緩存中,先預(yù)設(shè)一個高度,顯示圖片時異步下載圖片,下載完成后刷新控件

優(yōu)點:可以明顯縮短加載時間

缺點:可能會產(chǎn)生跳動,影響體驗

4.通過文件頭獲取圖片大小(針對格式為png、gif、jpg文件獲取其尺寸大小),如果獲取失敗,則下載完整圖片的NSData,然后轉(zhuǎn)成UIImage獲取圖片大小,如果有使用SDWebImage,則使用SDWebImage緩存該圖片

優(yōu)點:相比2來說,獲取頭文件速度會快很多

缺點:雖然獲取頭文件耗時比下載圖片快很多,但是還是有延遲,會阻塞主線程UI的繪制,如果網(wǎng)速不好的話會影響用戶體驗。

對于1、2的實現(xiàn),都是很簡單的,這里不做贅述。

關(guān)于方法3,不同情景下的代碼不同這里也不好給出代碼。

所以我就把方法4封裝成IUIImage的一個擴展方法,這里給出代碼地址,希望能幫到大家:

UIImage+WebSize

關(guān)于以上方案的選擇,個人認為,如果有較大的圖片,可以采用方法3,如果圖片不大,且一次獲取的數(shù)量也不是很多的話,用方法4會方便很多。當然,如果你有更好的方法,煩請聯(lián)系我或者留言讓我知曉,在此謝過。

參考文章:

http://blog.sina.com.cn/s/blog_134451adb0102whkf.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 圖片下載的這些回調(diào)信息存儲在SDWebImageDownloader類的URLOperations屬性中,該屬性是...
    怎樣m閱讀 2,428評論 0 1
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,250評論 4 61
  • 雖然不喜歡冬天,可它還是不可阻擋地來了,每年都是這樣,任由你心中如何抵觸、恐懼、擔憂……日子還是一如既往前...
    千山暮雪無歸處閱讀 187評論 0 0
  • 戀人間的擁抱是激動,情侶間的擁抱是微妙,夫妻間的擁抱是心安。 以前,我們是戀人。學(xué)生時代,偷偷摸摸約會,在學(xué)校附近...
    巷陌閱讀 204評論 0 0