1. 程式人生 > >【IOS】UIImage載入圖片的方式以及Assets.xcassets對於載入方法的影響

【IOS】UIImage載入圖片的方式以及Assets.xcassets對於載入方法的影響

圖片快取

根據是否將建立好的物件快取入系統記憶體,有兩類建立UIImage
物件的方法可選:

  • 快取:+ imageNamed:,只需傳入檔名.副檔名(可選)即可。
  • 不快取:+ imageWithContentsOfFile:,必須傳入檔案的全名(全路徑+檔名)。

注意,對於有快取功能的方法來說,其建立物件的步驟如下:
根據圖片檔名在快取池中查詢特定的UIImage
物件,入存在,將這個物件返回。
如果不存在,則從bundle中載入圖片資料,建立物件並返回。
如果相應的圖片資料不存在,返回nil。

Assets.xcassets

Assets.xcassets在app打包後,以Assets.car檔案的形式出現在bundle中。其作用在於:

  • 自動識別@2x,@3x圖片,對內容相同但解析度不同的圖片統一管理。
  • 可以對圖片進行剪裁和拉伸處理。

UIImage從bundle中載入圖片資源

注意

  • Assets.xcassets中的圖片資源只能通過imageNamed:方法載入,通過NSBundle的pathForResource:ofType:無法獲得圖片路徑。因此,Assets.xcassets只適合存放系統常用的,佔用記憶體小的圖片資源。
  • imageNamed:方法同樣可以載入根目錄中的圖片資源。
  • 要想利用imageWithContentsOfFile:方法以不快取的形式載入圖片,必須將圖片資源放置在根目錄
    中。
  • 相對於jpg,iOS對png的支援較好,例如,如果從Assets.xcassets
    以外的地方載入圖片,必須在檔名後加副檔名,例如:
// pic.jpg處於根目錄下  
[UIImage imageNamed:@"pic"]; // 錯誤,圖片未能正確載入  
[UIImage imageNamed:@"pic.jpg"]; // 正確