如何为SF Symbol指定与当前locale不同的独立展示语言?
解决方案
完全可以通过SF Symbols原生能力实现该需求,不需要额外引入自定义图片资源。
实现方式
从iOS 15版本开始,UIImage.SymbolConfiguration支持单独指定符号渲染使用的Locale,不需要跟随系统全局Locale生效,你只需要给这个按钮的符号配置固定英文Locale即可,修改后代码如下:
// 固定使用英文Locale渲染符号 let englishLocale = Locale(identifier: "en_US") // 拼接符号配置:尺寸+字重+固定Locale let config = UIImage.SymbolConfiguration(pointSize: 30, weight: .regular) .applying(UIImage.SymbolConfiguration(locale: englishLocale)) // 生成指定配置的SF Symbol图片 let image = UIImage(systemName: "textbox", withConfiguration: config)! button.setImage(image, for: .normal)
该配置仅作用于当前生成的符号,不会影响应用其他组件的本地化表现,符合你仅修改单个按钮图标的需求。
低版本兼容方案
如果你的应用需要兼容iOS 15以下的系统,可以直接在SF Symbols桌面应用中导出英文Locale下的textbox符号为png/svg资源,添加到项目Asset Catalog后直接调用本地资源即可,不会跟随系统Locale变化。
内容的提问来源于stack exchange,提问作者SamB
相关产品推荐
相关产品推荐

