元件化開發(二)

weixin_33936401發表於2018-04-23

專案的基本配置

1. 圖片素材的位置

1648044-62f9c6f215fe15a6.png
圖一

如圖一所示,我們在開發中,一般會把素材放到如上兩個位置A & B
對於放到Assets.xcassets資料夾的素材通過UIImage.init?(named name: String)載入

public /*not inherited*/ init?(named name: String) // load from main bundle

let image = UIImage(named: "test.jpg")

載入順序是先去Assets.xcassets中找對應檔名的素材,如果沒有會去MainBundle中找到對應的素材,也就是先B後A

對於放到專案主資料夾中的素材,我們通過Bundle.main.path(forResource name: String?, ofType ext: String?)

let imagePath = Bundle.main.path(forResource: "test", ofType: "jpg")
let image = UIImage(contentsOfFile: imagePath)

該方式載入素材不會去到Assets.xcassets中載入,會直接去MainBundle中找,如果找不到,為空

在開發中,專案中經常會用到的素材最好放在Assets.xcassets中,通過UIImage.init?(named name: String)載入會把圖片快取,如果經常用到,這樣可以保證節省系統資源。反之專案中不常用到的素材,最好放到專案主資料夾(MainBundle)中,通過該方式載入素材會獲取到素材的路徑path,然後通過public init?(contentsOfFile path: String)載入,通過public init?(contentsOfFile path: String)載入圖片不會快取圖片。節省資源,比如第一次安裝App的引導素材偏大且不常用,使用這種方式更好!

2. 螢幕尺寸和啟動圖片的關係

螢幕尺寸是等於對應啟動圖片的大小的,如果缺少某個尺寸的圖片,如果缺少4.7寸的圖片,那麼當App執行在4.7寸螢幕的手機上時,會出現螢幕顯示異常。系統如果發現沒有找到當前裝置螢幕對應的尺寸的圖片會去找小於當前螢幕尺寸的素材,隨後拉伸素材直至佔滿螢幕。

3. Target Membership

對於專案中的檔案,大部分我們選中會發現在XCode右邊的工具欄中圖二(Target Membership)所示選項都是選中的


1648044-3ca00e7b0acaf910.png
圖二

所有選中這個選項的檔案都會顯示在圖三所示的位置


1648044-8a1c774210e6480c.png
圖三

顯示在圖三所示位置的檔案在編譯時都會參與編譯打包到最終的.App檔案中。如果某個檔案的Target Membership沒有選中,則在編譯時如果程式碼中引用了該檔案,則會提示報錯找不到對應檔案。
Tips:
  • 對於info.plist檔案,系統會自動檢索info關鍵字,在編譯的時候會自動打包帶有info關鍵字的檔案。所以對於info.plsit檔案不需要選中Target Membership,如果選中,會提示
Warning: The Copy Bundle Resources build phase contains this target's Info.plist file 'FM/Info.plist'.

相關文章