UIImage加載圖片的方式以及Images.xcassets對於加載方法的影響


UIImage加載圖片的方式以及Images.xcassets對於加載方法的影響緩存

圖片緩存

根據是否將建立好的對象緩存入系統內存,有兩類建立UIImage對象的方法可選:app

  • 緩存:+ imageNamed:,只需傳入文件名.擴展名(可選)便可。
  • 不緩存:+ imageWithContentsOfFile:,必須傳入文件的全名(全路徑+文件名)。

注意,對於有緩存功能的方法來講,其建立對象的步驟以下:ui

  1. 根據圖片文件名在緩存池中查找特定的UIImage對象,若存在這個對象,將此對象返回。
  2. 若是不存在這個對象,則從mainBundle中加載圖片數據,建立對象並返回。
  3. 若是相應的圖片數據不存在,返回nil。

Images.xcassets

Images.xcassets在app打包後,以Assets.car文件的形式出如今bundle中。其做用在於:spa

  • 自動識別@2x,@3x圖片,對內容相同但分辨率不一樣的圖片統一管理。
  • 能夠對圖片進行剪裁和拉伸處理。

UIImage從bundle中加載圖片資源

注意code

  • Images.xcassets中的圖片資源只能經過imageNamed:方法加載,經過NSBundle的pathForResource:ofType:沒法得到圖片路徑。所以,Images.xcassets只適合存放系統經常使用的,佔用內存小的圖片資源。
  • imageNamed:方法一樣能夠加載根目錄中的圖片資源。
  • 要想利用imageWithContentsOfFile:方法以不緩存的形式加載圖片,必須將圖片資源放置在根目錄中。
  • 相對於jpg,iOS對png的支持較好,例如,若是從Images.xcassets之外的地方加載圖片,必須在文件名後加擴展名,例如:
// pic.jpg處於根目錄下 [UIImage imageNamed:@"pic"]; // 錯誤,圖片未能正確加載 [UIImage imageNamed:@"pic.jpg"]; // 正確
相關文章
相關標籤/搜索