圖片緩存
根據是否將創(chuàng)建好的對象緩存入系統(tǒng)內存瘩蚪,有兩類創(chuàng)建UIImage
對象的方法可選:
- 緩存:+ imageNamed:,只需傳入文件名.擴展名(可選)即可琉用。
- 不緩存:+ imageWithContentsOfFile:帆啃,必須傳入文件的全名(全路徑+文件名)擒悬。
注意,對于有緩存功能的方法來說趋观,其創(chuàng)建對象的步驟如下:
根據圖片文件名在緩存池中查找特定的UIImage
對象扛禽,入存在,將這個對象返回皱坛。
如果不存在编曼,則從bundle中加載圖片數據,創(chuàng)建對象并返回剩辟。
如果相應的圖片數據不存在掐场,返回nil。
Assets.xcassets
Assets.xcassets在app打包后贩猎,以Assets.car文件的形式出現(xiàn)在bundle中熊户。其作用在于:
- 自動識別@2x,@3x圖片吭服,對內容相同但分辨率不同的圖片統(tǒng)一管理嚷堡。
- 可以對圖片進行剪裁和拉伸處理。
UIImage從bundle中加載圖片資源
注意
- Assets.xcassets中的圖片資源只能通過imageNamed:方法加載艇棕,通過NSBundle的pathForResource:ofType:無法獲得圖片路徑蝌戒。因此,Assets.xcassets只適合存放系統(tǒng)常用的沼琉,占用內存小的圖片資源北苟。
- imageNamed:方法同樣可以加載根目錄中的圖片資源。
- 要想利用imageWithContentsOfFile:方法以不緩存的形式加載圖片打瘪,必須將圖片資源放置在根目錄
中粹淋。 - 相對于jpg吸祟,iOS對png的支持較好,例如桃移,如果從Assets.xcassets
以外的地方加載圖片屋匕,必須在文件名后加擴展名,例如:
// pic.jpg處于根目錄下
[UIImage imageNamed:@"pic"]; // 錯誤借杰,圖片未能正確加載
[UIImage imageNamed:@"pic.jpg"]; // 正確