前言
之前我介绍了深色模式适配和 UIColor
相关的分类,今天要介绍的继续和UI相关,是一个库,叫 SFSafeSymbols
,大家跟着我一起来看看吧。
在和大伙介绍这个库之前,我们先说一个 Apple 开发的软件,叫 SF Symbols
。
这里软件是用来干嘛的呢,我上个截图大家就知道了:
SF Symbols
在 WWDC 2019 期间推出。自此 Apple 为我们提供了免费 Symbols,供我们在应用中使用,而且使用它们非常简单。
说简单点,就是 Apple 官方提供一套 UI 素材给开发者,可以使用。
经历了 WWDC 2020 和 WWDC 2021 之后,SF Symbols 已经到 3.0 了。
那么我们应该如何使用它呢?
比如上图中的第一个图标我觉得不错,想在 iOS 中进行开发,我先右键拷贝下来这个名称:
然后通过函数进行调用:
let image = UIImage(systemName: "folder.badge.person.crop")
我们看看这个 systemName
的初始化函数的整体情况:
open class UIImage : NSObject, NSSecureCoding {
@available(iOS 13.0, *)
public /*not inherited*/ init?(systemName name: String)
}
iOS13 之后可用,可选构造函数,返回的是 UIImage?
类型,传入的 name 是字符串,硬编码,不安全。
这个时候 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 去初始化一个已经解包好的 image,返回的是 UIImage
,而不是 UIImage?
,一并解决硬编码问题。
更多详细的用法,大家可以在 Github 中去查了,我这就不多费笔墨了。
现在,有了 SFSafeSymbols
库,没有 UI 我也不愁了。
通过 SF Symbols
软件查询,与 SFSafeSymbols
的安全调用,我们可以很好的调用 Apple 为我们设计好的图标。这对于独立开发,或者是苦于找不到素材的开发人员是一件好事。我们甚至可以把 SF Symbols 软件分享给 UI,让他们设计出更 Apple 的图标。当然 SF Symbols 仅支持 iOS 13 之后,这确实是一大痛点。我们下期见。