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:方法以不緩存的形式加載圖片,必須將圖片資源放置在根目錄
中。

相對于JPEG,iOS對PNG的支持較好,一般我們建議UI切圖為PNG格式
如果從Assets.xcassets以外的地方加載圖片,必須在文件名后加擴展名,例如:
// pic.jpg處于根目錄下  
[UIImage imageNamed:@"pic"]; // 錯誤,圖片未能正確加載  
[UIImage imageNamed:@"pic.jpg"]; // 正確
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容