使用SF Symbols系统图像来作为静态的UIApplicationShortcutItem。

21
当指定主屏幕快速操作UIApplicationShortcutItems时,在您的Info.plist中,是否有一种使用SF Symbols系统图像的方法? 文档记录可用的iOS键没有指定这样做的键,除了指定UIApplicationShortcutItemIconType的预定义枚举值之一,例如UIApplicationShortcutIconTypeSearch
在创建动态快速操作时,可以使用系统图像通过新的初始化程序UIApplicationShortcutIcon.init(systemImageName: String)。 是否有一个Info.plist键允许静态快速操作使用此功能?

1
你可以尝试将股票应用程序从ipsw更新文件中提取出来,或者通过越狱设备将其导入计算机,然后浏览它们的Info.plist文件,查看是否有任何一个使用了SF Symbols。 - EmilioPelaez
3个回答

19

请在 Info.plist 中使用 UIApplicationShortcutItemIconSymbolName 替代 UIApplicationShortcutItemIconFile


这个有文档记录吗?我不太敢使用它。 - Daniel Storm
2
这里有文档记录:https://developer.apple.com/documentation/uikit/menus_and_shortcuts/add_home_screen_quick_actions - Vadoff

17

本地但不太兼容的方法:(请阅读到最后)

有一种文档较少的方法是在Info.plist文件中使用UIApplicationShortcutItemIconSymbolName而不是UIApplicationShortcutItemIconFile


旧但更好的方法:

由于您在静态使用时不需要使用太多符号,因此这是解决方案:

  1. 选择所需的符号并从SF Symbols.app导出:

Exporting

将其导入到Assets.xcassets中:

Assets

  1. 使用它的名称作为键UIApplicationShortcutItemIconFile

Info.plist

结果

Result


结论

第二种方法还会为您的应用程序带来更多好处

  • 向后兼容(支持 iOS 12 及以下版本)
  • 向前兼容!(防止破坏性更改)
  • 更广泛的支持

这些答案中这里有更详细的描述。


除了手动操作之外,我唯一要提出的担忧是苹果可能会在未来更改(或修改)这些图像。根据图像的不同,这可能是非常好的或非常糟糕的,但在进行此操作之前值得考虑。 - benc

2

我阅读了文档并尝试了几种方法来实现这个功能,但我得出的结论是由于两个主要原因,这不可能实现:

  • SF Symbols 仅适用于运行 iOS 13 或更早版本的设备本地使用。
  • Info.plist 文件可以指定 platformdevice 类型,但无法指定操作系统版本。

在苹果公司的文档中还说明:

您可以在运行 iOS 13 及更高版本、watchOS 6 及更高版本和 tvOS 13 及更高版本的应用程序中使用 SF Symbols。要浏览完整的符号集,请下载 SF Symbols 应用程序。

这意味着您可以使用这些符号,但是需要按照标准方式。以下是您可以做的:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接