Swift:有了SFSafeSymbols库,没有UI我也不愁了

4,671 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

之前我介绍了深色模式适配和UIColor相关的分类,今天要介绍的继续和UI相关,是一个库,叫SFSafeSymbols,大家跟着我一起来看看吧。

SF Symbols

在和大伙介绍这个库之前,我们先说一个Apple开发的软件,叫SF Symbols。

这里软件是用来干嘛的呢,我上个截图大家就知道了:

image.png

SF Symbols 在 WWDC 2019 期间推出。自此Apple 为我们提供了免费 Symbols,供我们在应用中使用,而且使用它们非常简单。

说简单点,就是Apple官方提供一套UI素材给开发者,可以使用。

经历了WWDC 2020和WWDC 2021之后,SF Symbols已经到3.0了。

那么我们应该如何使用它呢?

比如上图中的第一个图标我觉得不错,想在iOS中进行开发,我先右键拷贝下来这个名称:

image.png

然后通过函数进行调用:

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就该登场啦。

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

SF Symbols 简介

总结

通过SF Symbols软件查询,与SFSafeSymbols的安全调用,我们可以很好的调用Apple为我们设计好的图标。

这对于独立开发,或者是苦于找不到素材的开发人员是一件好事。

我们甚至可以把SF Symbols软件分享给UI,让他们设计出更Apple的图标。

当然SF Symbols仅支持iOS 13之后,这确实是一大痛点。

我们下期见。