国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Swift > 正文

Swift中圖片資源使用流程的優化方法詳解

2020-03-09 17:42:36
字體:
來源:轉載
供稿:網友

前言

去年發布的Xcode9支持在代碼編輯中直接插入圖片,類似如下效果

swift,圖片資源,資源文件,讀取資源文件

但用了一段時間以后還是不太喜歡,換回了原來的方法。

本篇中許多實現細節已經在 iOS中多語言本地化流程的優化中寫過,沒再重復,若有疑問建議先閱讀該文章。

傳統的方法

// iOSlet closeImage = UIImage(named: "close")// macOSlet closeImage = NSImage(named: NSImage.Name("close"))

是不是看上去都感覺心累。

如何優化

思路和 iOS中多語言本地化流程的優化一樣,使用腳本將資源文件映射到靜態變量,即可直接調用:

Build Phases中新建一個 Run Script,填入以下腳本:

# Assets.xcassets文件夾路徑assetsFolder="${SRCROOT}/${PROJECT_NAME}/Assets.xcassets"# 生成的swift/299295.html">swift/274757.html">swift文件路徑(根據個人習慣修改)utilsFile="${SRCROOT}/${PROJECT_NAME}/Source/Utils/AssetsUtils.swift"touch $utilsFile# 兼容iOS和macOS的處理echo -e "#if os(OSX)/n typealias Image  = NSImage/n typealias ImageName = NSImage.Name/n#elseif os(iOS)/n import UIKit/n/n typealias Image  = UIImage/n typealias ImageName = String/n#endif" > "${utilsFile}"# 使用extension來擴展Imageecho -e "/nextension Image {" >> "${utilsFile}"# 遍歷資源文件夾,將每個資源拼接成靜態變量輸出到swift文件中for folder in `ls $assetsFolder`doif [[ $folder =~ ".imageset" ]]then asset=${folder/.imageset/} echo " static var assets_${asset}: Image? { return Image(named: ImageName(/"${asset}/")) }" >> "${utilsFile}"fidone# 完成輸出echo "}" >> "${utilsFile}"

第一次運行記得將AssetsUtils.swift加入到Xcode項目中

將 Run Script 放在 Compile Sources 的上面,這樣可以在編譯代碼前執行,如果出現錯誤也很容易定位。

swift,圖片資源,資源文件,讀取資源文件

腳本效果:

AssetsUtils.swift

#if os(OSX) typealias Image  = NSImage typealias ImageName = NSImage.Name#elseif os(iOS) import UIKit typealias Image  = UIImage typealias ImageName = String#endifextension Image { static var assets_close: Image? { return Image(named: ImageName("close")) }}

使用

// iOSlet closeImage = Image.assets_close// macOSlet closeImage = Image.assets_close

當資源文件有修改時 ?+B build一下就OK了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中牟县| 东海县| 隆子县| 蓬莱市| 罗定市| 肃北| 昌乐县| 报价| 卫辉市| 旬阳县| 车致| 天等县| 英超| 六枝特区| 灵寿县| 高青县| 本溪市| 卓资县| 临猗县| 江孜县| 和龙市| 黄山市| 怀来县| 慈溪市| 叙永县| 河西区| 乐清市| 顺昌县| 会同县| 肇庆市| 宾川县| 铜川市| 淮滨县| 水富县| 惠水县| 封丘县| 昂仁县| 剑河县| 察雅县| 仪陇县| 惠东县|