SwiftUI SF Symbols 好处及其使用指南

SwiftUI SF Symbols 好处及其使用指南

SF Symbols在WWDC 2019期间推出,对我们开发人员来说是一个很大的礼物。 Apple基本上为我们提供了免费符号,供我们在应用程序中使用,而且使用它们甚至也非常容易! 通过在WWDC 2020中引入SF Symbols 2.0,我们有了更多的可能性在我们的应用中显示精美的图标。

现在该深入探讨它们的详细信息以及如何使用它们来使您的应用看起来既美观又与系统应用程序保持一致.

什么是SF符号?

SF Symbols是一组1500多个符号,可在应用程序中使用。 它们可以按照各种重量和秤进行对齐和配置,以适应您的设计。 由于它们已集成到San Francisco系统字体中,因此它们会自动确保与所有重量和大小的文本垂直对齐。

什么是SF符号

哪些平台支持SF Symbols?

SF Symbols支持的平台是:

  • iOS 13及更高版本
  • watchOS 6及更高版本
  • tvOS 13及更高版本

由于符号包含在San Francisco系统字体中,因此您也可以在Mac应用程序中使用它们,但适用许可协议.

SF Symbols 2.0 –有什么新功能?

WWDC 2020引入了SF Symbols 2.0,并进行了一些非常受欢迎的更改。稍后,随着SF Symbols 2.0应用程序的面市,它们还不是全部可见。让我们回顾一下截至今天Xcode 12中可用的更改。

最新Beta版本中超过750个新符号

SF Symbols 2.0包括750多种新符号,包括设备,健康状况,运输符号等。新符号仅在iOS 14,iPadOS 14和macOS Big Sur的Beta版中可用。

改善光学对准

使用SF符号的挑战之一是光学对准。如果与San Fransisco系统字体一起使用,则可以自动确保垂直对齐,但是直到1.1版之前,都无法水平对齐符号以使其在所有情况下看起来都很好。

通过2.0更新,您现在可以为符号提供标准和自定义符号都支持的负边距。这应该给您足够的控制,以在视觉上水平对齐符号。例如,您可能有一个包含徽章的符号,在这种情况下,您需要在视觉上稍微水平地移动符号。

一个小警告是,这些符号中的两个可以彼此相邻放置,并且具有与两个符号重叠的负边距。尽管这种情况很少见,但您可能需要在两者之间添加额外的空间或其他内容,以免发生冲突。

SF Symbols 2.0添加了对多色符号的支持

乍一看,您现在似乎可以为SF符号着色。但是,通过应用简单的色泽已经可以做到这一点。与有色符号相比,新引入的多色符号具有独特性,因为它们会自动适应外观模式,辅助功能设置和鲜艳度。这是快速支持许多不同方案的好方法。

局部符号变体

另一个重要的新功能是支持从右到左书写系统的本地化符号变体以及希伯来语,阿拉伯语和梵文的特定于脚本的符号。这些变体经过优化,在那些系统中看起来很棒。

我可以到处使用符号吗?

不,绝对不是!密切注意适用的许可协议。如Apple所言:

您不得在应用程序图标,徽标或任何其他与商标相关的用途中使用SF符号(或实质上或令人困惑的字形)。 Apple保留进行审查的权利,并有权单方面决定要求对违反上述限制的任何Symbol进行修改或中止使用,并且您同意立即遵守任何此类要求。

限制符号

除了许可协议之外,还有一系列符号,只能用于引用特定的Apple技术。如果您使用符号来防止应用在商店中被拒绝,那么经常访问此列表是一件好事。

这些符号的完整列表可在“按原样使用的符号”段落下找到。

如何浏览可用的符号?

Apple提供了SF Symbols应用程序,可让您浏览,复制和导出任何可用的符号。该应用程序可在此处下载,并且可用于macOS 10.14及更高版本


如何浏览可用的符号

该应用程序允许您浏览符号并以选定的重量显示它们。 上图显示了中等重量的图标,下图显示了在UltraLight重量中相同图标的外观

移植符号

Mac应用程序允许您使用文件->导出符号...或⌘E将所有符号支持为SVG。 这是在您无法使用字体本身的地方包含符号的好方法。 但是,请记住许可协议。

浏览网上的符号

值得一提的是,您也可以在sfsymbols.com上浏览符号。通过在此网站上进行搜索,您可以获得的好处之一是,您可以查看每个图标(如果存在)的应用限制:
但是,由于前面所述的许可证限制,它们只能显示符号的名称,使用Mac应用程序仍然会更好。

创建自定义符号

只要没有符合您要求的符号,便可以创建自定义符号。 导出的SVG版本的符号结构良好,可以用作自定义符号的基础。

WWDC 2019的SF Symbols简介会议对如何使用自定义符号进行了深入说明.选择正确的符号作为基本参考,最好从与您想要的符号接近的符号开始。 要知道它们已经受版权保护,您不能使用Apple产品的复制品,也不能在自定义符号中复制它们。 另外,请查看前面提到的按原样使用的符号列表,因为这些符号无法自定义。
大多数形状也都可用,但其中没有图标。 例如circle或circle.fill:

圆圈符号是自定义符号的理想基础

这是自定义符号的一个很好的起点!

我需要支持所有的体重秤吗?

好吧,您实施的权重和标度越多,支持的文本设置范围就越广。 在所有比例下,最小值应为常规,中等,半粗体和粗体,以便您可以支持动态类型和粗体文本设置。

如何验证我的自定义SF符号?

该应用程序允许您通过菜单来验证自定义SF符号:文件➞验证自定义符号...。浏览并选择自定义符号以开始验证。

导出和使用自定义符号

将符号导出到SVG后,您只需将符号拖到Xcode中的资产目录中即可。

在Xcode中添加到资产目录的自定义符号

它显示符号的预览,并允许您配置其名称,外观,方向和本地化。

在iOS 12及更低版本上使用自定义符号

仅iOS 13及更高版本支持符号。 在做旧的系统版本的情况下,Apple做出了出色的工作,使我们可以轻松地重新获得图像。 只需为您的图像提供与自定义符号相同的名称,如果需要,下面的代码行将退回到该图像:

let customSymbol = UIImage(named: "my_custom_symbol")

如何在Swift中使用SF符号

要在Swift中使用SF Symbol,可以使用新的UIImage(systemName :)初始化程序:

let image = UIImage(systemName: "square.and.pencil")

如您所见,Apple使SF符号的使用变得非常容易:

在SF Symbols Mac应用中浏览并找到您的图标
使用⇧⌘C复制符号名称
使用UIImage(systemName :)初始化程序中的名称
在UIImageView,UIButton或任何其他UI元素中使用图像
如何在Swift中更改SF符号的比例?
要更改SF Symbol的比例,可以使用UIImage Symbol Configuration。

let smallConfiguration = UIImage.SymbolConfiguration(scale: .small)
let smallSymbolImage = UIImage(systemName: "square.and.pencil", withConfiguration: smallConfiguration)

如何在Swift中更改SF符号的权重?

权重也可以通过UIImage符号配置来更改。

let ultraLightConfiguration = UIImage.SymbolConfiguration(weight: .ultraLight)
let ultraLightSymbolImage = UIImage(systemName: "square.and.pencil", withConfiguration: ultraLightConfiguration)

在UIImageView和UIButton中更改符号配置

UIImageView和UIButton类带有新的属性preferredSymbolConfiguration,该属性使您可以将特定配置应用于图像视图中设置的任何符号。

let imageView = UIImageView(image: defaultSymbolImage)
let updatedConfiguration = UIImage.SymbolConfiguration(weight: .bold)
imageView.preferredSymbolConfiguration = updatedConfiguration

只要在图片视图中进行设置,就会更改符号。 正如您在下面的Swift Playground图片中所看到的,该符号也被更改为蓝色。带SF符号的已配置UIImageView,这是从图像视图上设置的色彩继承的。 如果要确保符号始终以特定的颜色显示,可以使用withTintColor方法:

let heartImage = UIImage(systemName: "heart.fill")!
let redHeartImage = heartImage.withTintColor(.red, renderingMode: .alwaysOriginal)

组合配置

如果您要保存多个配置以在整个应用中使用,则可能是您希望对共享配置进行小的调整。

您可以使用Apply方法轻松完成此操作。

let boldLargeConfig = UIImage.SymbolConfiguration(pointSize: UIFont.systemFontSize, weight: .bold, scale: .large)
let smallConfig = UIImage.SymbolConfiguration(scale: .small)
let boldSmallConfig = boldLargeConfig.applying(smallConfig)
let boldSmallSymbolImage = UIImage(systemName: "square.and.pencil", withConfiguration: boldSmallConfig)

对齐符号

新的UIImage.withBaselineOffset(fromBottom :)方法允许您从图像的底部向图像应用新的偏移量。 此方法在图像的一般使用中也可能有用。

推荐

基础文章推荐

经典教程推荐

上新

技术源码推荐

推荐文章

CoreData篇

Combine篇

TextField篇

JSON文件篇


一篇文章系列

技术交流

QQ:3365059189
SwiftUI技术交流QQ群:518696470

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271