前言
之前我介紹了深色模式適配和UIColor相關(guān)的分類,今天要介紹的繼續(xù)和UI相關(guān),是一個(gè)庫,叫SFSafeSymbols,大家跟著我一起來看看吧。
SF Symbols
在和大伙介紹這個(gè)庫之前,我們先說一個(gè)Apple開發(fā)的軟件,叫SF Symbols。
這里軟件是用來干嘛的呢,我上個(gè)截圖大家就知道了:

如果你正在面試,或者正準(zhǔn)備跳槽,不妨看看我精心總結(jié)的面試資料:https://gitee.com/Mcci7/i-oser 來獲取一份詳細(xì)的大廠面試資料 為你的跳槽加薪多一份保障
SF Symbols 在 WWDC 2019 期間推出。自此Apple 為我們提供了免費(fèi) Symbols,供我們?cè)趹?yīng)用中使用,而且使用它們非常簡(jiǎn)單。
說簡(jiǎn)單點(diǎn),就是Apple官方提供一套UI素材給開發(fā)者,可以使用。
經(jīng)歷了WWDC 2020和WWDC 2021之后,SF Symbols已經(jīng)到3.0了。
那么我們應(yīng)該如何使用它呢?
比如上圖中的第一個(gè)圖標(biāo)我覺得不錯(cuò),想在iOS中進(jìn)行開發(fā),我先右鍵拷貝下來這個(gè)名稱:

然后通過函數(shù)進(jìn)行調(diào)用:
let image = UIImage(systemName: "folder.badge.person.crop")
復(fù)制代碼
我們看看這個(gè)systemName的初始化函數(shù)的整體情況:
open class UIImage : NSObject, NSSecureCoding {
@available(iOS 13.0, *)
public /*not inherited*/ init?(systemName name: String)
}
iOS13之后可用,可選構(gòu)造函數(shù),返回的是UIImage?類型,傳入的name是字符串,硬編碼,不安全。
這個(gè)時(shí)候SFSafeSymbols就該登場(chǎng)啦。
SFSafeSymbols
A SF Symbol UIImage can now be initialized using the SFSymbol enum. This image is already unwrapped, so you get a UIImage instead of a UIImage?:
UIImage(systemSymbol: .cCircle)
UIImage(systemSymbol: SFSymbol.eCircleFill)
UIImage(systemSymbol: ._11CircleFill, withConfiguration: /* Some UIImage.Configuration */)
通過SFSafeSymbols庫,我們可以通過庫提供的SFSymbol中的enum去初始化一個(gè)已經(jīng)解包好的image,返回的是UIImage,而不是UIImage?,一并解決硬編碼問題。
更多詳細(xì)的用法,大家可以在Github中去查了,我這就不多費(fèi)筆墨了。
現(xiàn)在,有了SFSafeSymbols庫,沒有UI我也不愁了。
參考文檔:
總結(jié)
通過SF Symbols軟件查詢,與SFSafeSymbols的安全調(diào)用,我們可以很好的調(diào)用Apple為我們?cè)O(shè)計(jì)好的圖標(biāo)。
這對(duì)于獨(dú)立開發(fā),或者是苦于找不到素材的開發(fā)人員是一件好事。
我們甚至可以把SF Symbols軟件分享給UI,讓他們?cè)O(shè)計(jì)出更Apple的圖標(biāo)。
當(dāng)然SF Symbols僅支持iOS 13之后,這確實(shí)是一大痛點(diǎn)。