有没有办法为 SF 符号使用不同于当前语言环境的特定语言环境?

Is there a way to use a specific locale for a SF Symbol which is different from the current locale?

我有一个支持英语和日语语言环境的应用程序。在那里,我正在创建一个 button 并为其设置一个 UIImage,它使用 SF Symbol.

let image = UIImage(systemName: "textbox")!.withConfiguration(UIImage.SymbolConfiguration(pointSize: 30, weight: .regular))
button.setImage(image, for: .normal)

现在对于英语和日语语言环境,按钮如下所示。

我需要停止对这个特定 button 的图像进行本地化。对于这两种语言环境,我希望 SF Symbol 现在出现在 button 中。有没有办法用 SF Symbols 来实现这个?

似乎为 SF 符号强制使用特定语言的唯一方法是附加语言代码,因此在 textbox:

的情况下
UIImage(systemName: "textbox")
UIImage(systemName: "textbox.ar")
UIImage(systemName: "textbox.he")
UIImage(systemName: "textbox.hi")
UIImage(systemName: "textbox.ja")
UIImage(systemName: "textbox.ko")
UIImage(systemName: "textbox.th")
UIImage(systemName: "textbox.zh")
UIImage(systemName: "textbox.zh.traditional")

但是,这不会让你强制使用英文版本,只能强制使用非英文版本。通过 Apple 的 API 加载 SF Symbols 时,您可能不走运。我会采用 Joakim Danielson 的方法并尝试导出默认图标。

如果有人想为英语以外的任何语言环境执行此操作,那么 将是更好的选择。

对于语言环境英语,正如@JoakimDanielson 在评论中建议的那样,我通过下载 SF Symbols 应用程序并将所需的 SF Symbol 导出为 custom symbol template

来完成此操作

SF Symbols 应用 -> 文件 -> 导出自定义符号模板

这个自定义符号默认没有任何语言环境,可以添加到项目的Assets中。添加后,您可以将其用作使用 UIImage(named:)

添加的任何其他图像资产
let image = UIImage(named: "textbox")!.withConfiguration(UIImage.SymbolConfiguration(pointSize: 30, weight: .regular))
button.setImage(image, for: .normal)

有关从 SF Symbols 应用程序导出符号的官方 Apple 文档在此处 https://developer.apple.com/documentation/uikit/uiimage/creating_custom_symbol_images_for_your_app