Swift中如何使用符号字面量而非名称调用SF Symbol?
SF Symbol 符号字面量使用相关问题
常规调用方法
常规使用SF Symbol的流程为:在SF Symbols应用中找到所需图标,复制其名称后通过Image(systemName:)构造器调用。例如需要展示分享图标时,可使用如下代码:
Image(systemName: "square.and.arrow.up")
上述代码可在UI中正常渲染出对应分享图标。
该方式虽然易用,但参考颜色字面量、图像字面量的使用逻辑,开发者通常不希望直接使用square.and.arrow.up这类字符串名称,而是想在代码中使用更直观的符号字面量完成调用。
已尝试的方案与报错
在SF Symbols应用中选择「Copy symbol」选项后将内容粘贴到Xcode,可得到代表“符号字面量”的特殊字符,但直接使用该字符编写代码时会抛出如下错误:
No symbol named '' found in system symbol set
(系统符号集中未找到名为''的符号)
目前临时解决方法是将符号字面量添加到代码注释中,但无法避免重复书写符号的问题。此前已尝试以下方案,均未生效:
- 调用
Image(_ name:bundle:)构造器:无法渲染出任何内容 - 调用
Text(_ content:)构造器:仅显示带问号的黑色方块 - 使用
#imageLiteral:经相关实现方案调研,未找到可行路径
核心诉求
寻找可行方案,实现Xcode中直接使用这类符号字面量,让Xcode自动生成关联对应systemName的Image实例,替代代码库中硬编码的square.and.arrow.up这类字符串名称。
内容的提问来源于stack exchange,提问作者Senseful
相关产品推荐
相关产品推荐

