欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Swift中圖片資源使用流程的優(yōu)化方法詳解

 更新時間:2018年01月14日 16:02:06   作者:AntScript  
這篇文章主要給大家介紹了關(guān)于Swift中圖片資源使用流程的優(yōu)化方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

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

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

本篇中許多實現(xiàn)細(xì)節(jié)已經(jīng)在 iOS中多語言本地化流程的優(yōu)化中寫過,沒再重復(fù),若有疑問建議先閱讀該文章。

傳統(tǒng)的方法

// iOS
let closeImage = UIImage(named: "close")
// macOS
let closeImage = NSImage(named: NSImage.Name("close"))

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

如何優(yōu)化

思路和 iOS中多語言本地化流程的優(yōu)化一樣,使用腳本將資源文件映射到靜態(tài)變量,即可直接調(diào)用:

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

# Assets.xcassets文件夾路徑
assetsFolder="${SRCROOT}/${PROJECT_NAME}/Assets.xcassets"
# 生成的swift文件路徑(根據(jù)個人習(xí)慣修改)
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來擴展Image
echo -e "\nextension Image {" >> "${utilsFile}"

# 遍歷資源文件夾,將每個資源拼接成靜態(tài)變量輸出到swift文件中
for folder in `ls $assetsFolder`
do
if [[ $folder =~ ".imageset" ]]
then
 asset=${folder/.imageset/}
 echo " static var assets_${asset}: Image? { return Image(named: ImageName(\"${asset}\")) }" >> "${utilsFile}"
fi
done
# 完成輸出
echo "}" >> "${utilsFile}"

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

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

腳本效果:

AssetsUtils.swift

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

使用

// iOS
let closeImage = Image.assets_close
// macOS
let closeImage = Image.assets_close

當(dāng)資源文件有修改時 ⌘+B build一下就OK了。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Swift編程中實現(xiàn)希爾排序算法的代碼實例

    Swift編程中實現(xiàn)希爾排序算法的代碼實例

    希爾排序是對插入排序的一種改進版本,算法本身并不穩(wěn)定,存在優(yōu)化空間,這里我們來講一下希爾排序的大體思路及Swift編程中實現(xiàn)希爾排序算法的代碼實例
    2016-07-07
  • Swift3.0 GCD定時器的使用DEMO

    Swift3.0 GCD定時器的使用DEMO

    這篇文章主要介紹了Swift3.0 GCD定時器的使用,實現(xiàn)倒計時,UIDatePicker的使用, 仿寫一個活動倒計時的DEMO,需要的朋友可以參考下
    2017-02-02
  • Swift之for循環(huán)的基礎(chǔ)使用學(xué)習(xí)

    Swift之for循環(huán)的基礎(chǔ)使用學(xué)習(xí)

    這篇文章主要為大家介紹了Swift之for循環(huán)的基礎(chǔ)學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 如何利用SwiftUI實現(xiàn)可縮放的圖片預(yù)覽器

    如何利用SwiftUI實現(xiàn)可縮放的圖片預(yù)覽器

    這篇文章主要給大家介紹了關(guān)于如何利用SwiftUI實現(xiàn)可縮放圖片預(yù)覽器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SwiftUI具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-09-09
  • swift4.2實現(xiàn)新聞首頁導(dǎo)航

    swift4.2實現(xiàn)新聞首頁導(dǎo)航

    這篇文章主要為大家詳細(xì)介紹了swift4.2實現(xiàn)新聞首頁導(dǎo)航,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 升級到Swift 4.0可能遇到的坑總結(jié)

    升級到Swift 4.0可能遇到的坑總結(jié)

    這篇文章主要給大家介紹了關(guān)于升級到Swift 4.0可能遇到的坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用swift4具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Swift能代替Objective-C嗎?

    Swift能代替Objective-C嗎?

    這是我在網(wǎng)上上看到的答案,復(fù)制粘貼過來和大家分享一下,因為我和很多人一樣很關(guān)心Swift的出現(xiàn)對Mac開發(fā)的影響和對Objective-C的影響。
    2014-09-09
  • Swift算法之棧和隊列的實現(xiàn)方法示例

    Swift算法之棧和隊列的實現(xiàn)方法示例

    Swift語言中沒有內(nèi)設(shè)的棧和隊列,很多擴展庫中使用Generic Type來實現(xiàn)?;蚴顷犃?。下面這篇文章就來給大家詳細(xì)介紹了Swift算法之棧和隊列的實現(xiàn)方法,需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-03-03
  • swift中defer的實際應(yīng)用小結(jié)

    swift中defer的實際應(yīng)用小結(jié)

    這篇文章主要給大家介紹了關(guān)于swift中defer的實際應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • swift中正確安全聲明一個單例的方法實例

    swift中正確安全聲明一個單例的方法實例

    這篇文章主要給大家介紹了關(guān)于swift中如何正確安全聲明一個單例的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論