将 SF Symbols 系统映像用于静态 UIApplicationShortcutItem

Use SF Symbols system image for static UIApplicationShortcutItem

在您的 Info.plist 中指定主屏幕快速操作 UIApplicationShortcutItems 时,是否可以使用来自 SF Symbols 的系统图像?

docs noting the available iOS keys 除了指定 UIApplicationShortcutItemIconType 中的预定义枚举案例之一(例如 UIApplicationShortcutIconTypeSearch.

之外,没有指定执行此操作的键

通过新的初始化程序创建动态快速操作时可以使用系统映像 UIApplicationShortcutIcon.init(systemImageName: String)。是否有允许静态快速操作的 Info.plist 键?

我阅读了文档并尝试了几种方法来使其正常工作,但我得出的结论是这不可能实现,主要原因有两个:

  • SF Symbols 只能在 运行 iOS 13 或更早的设备上本地使用。
  • Info.plist 文件可以指定 platformdevice 类型,但不能指定 OS 版本。

在 Apple 的 documents 中还声明:

You can use SF Symbols in apps running in iOS 13 and later, watchOS 6 and later, and tvOS 13 and later. To browse the full set of symbols, download the SF Symbols app.

这意味着您能够以标准方式使用这些符号。您可以执行以下操作:

  • here 下载 SF Symbols 应用程序。
  • 导出您想要用作 SVG 文件的符号。
  • 将导出的 SVG 文件添加到您的资产中。
  • 使用资产名称作为 UIApplicationShortcutItemIconFile 键的值。

这可能不是您所希望的方法,但它是使用 SF Symbols 作为快捷方式图标的有效解决方案,所以我希望这对您有用。

本机但不太兼容的方式:(读到最后)

有一个poor documented way,就是在Info.plist文件中用UIApplicationShortcutItemIconSymbolName代替UIApplicationShortcutItemIconFile


旧的但可能更好的方法:

由于需要同时静态使用的符号不是太多,解决方法如下:

  1. Select 您需要的符号并从 SF Symbols.app:
  2. 中导出

  1. 将其导入 Assets.xcassets:

  1. 使用密钥的名称 UIApplicationShortcutItemIconFile:

结果


结论

第二种方法还为您的应用带来[=44​​=]更多好处:

  • 向后兼容(支持iOS 12及以下)
  • 向前兼容! (防止中断更改)
  • 更广泛的支持

更多描述

在 Info.plist 中使用 UIApplicationShortcutItemIconSymbolName 而不是 UIApplicationShortcutItemIconFile