圖片緩存
根據(jù)是否將創(chuàng)建好的對象緩存入系統(tǒng)內(nèi)存,有兩類創(chuàng)建UIImage
對象的方法可選:
//緩存:
+ imageNamed:,只需傳入文件名.擴展名(可選)即可。
//不緩存:
+ imageWithContentsOfFile:寒亥,必須傳入文件的全名(全路徑+文件名)。
注意荧关,對于有緩存功能的方法來說溉奕,其創(chuàng)建對象的步驟如下:
根據(jù)圖片文件名在緩存池中查找特定的UIImage
對象,入存在忍啤,將這個對象返回加勤。
如果不存在,則從bundle中加載圖片數(shù)據(jù)同波,創(chuàng)建對象并返回鳄梅。
如果相應(yīng)的圖片數(shù)據(jù)不存在,返回nil参萄。
Assets.xcassets
Assets.xcassets在app打包后卫枝,以Assets.car文件的形式出現(xiàn)在bundle中。其作用在于:
自動識別@2x讹挎,@3x圖片校赤,對內(nèi)容相同但分辨率不同的圖片統(tǒng)一管理。
可以對圖片進行剪裁和拉伸處理筒溃。
UIImage從bundle中加載圖片資源
注意:
Assets.xcassets中的圖片資源只能通過imageNamed:
方法加載马篮,通過NSBundle的pathForResource:ofType:無法獲得圖片路徑。因此怜奖,Assets.xcassets只適合存放系統(tǒng)常用的浑测,占用內(nèi)存小的圖片資源。
imageNamed:
方法同樣可以加載根目錄中的圖片資源。
要想利用imageWithContentsOfFile:
方法以不緩存的形式加載圖片迁央,必須將圖片資源放置在根目錄
中掷匠。
相對于JPEG,iOS對PNG的支持較好岖圈,一般我們建議UI切圖為PNG格式
如果從Assets.xcassets以外的地方加載圖片讹语,必須在文件名后加擴展名,例如:
// pic.jpg處于根目錄下
[UIImage imageNamed:@"pic"]; // 錯誤蜂科,圖片未能正確加載
[UIImage imageNamed:@"pic.jpg"]; // 正確