SwiftUI如何修改Text视图内自定义SF Symbol的颜色?
解决方案
出现该问题的核心原因是通过UIImage初始化的Image实例默认采用原始渲染模式,不会继承父视图的foregroundColor配置,可通过以下任意一种方案解决:
- 方案1:代码内指定渲染模式(全版本兼容)
直接在插值时修改UIImage的渲染模式为模板渲染即可:
Text("This is some text with a \(Image(uiImage: UIImage(named: "customSFSymbol")!.withRenderingMode(.alwaysTemplate))) symbol.")
修改后外层添加的.foregroundColor(.white)修饰符会同时作用于文本和内嵌符号。
- 方案2:纯SwiftUI写法(适配iOS 15+)
如果项目最低支持iOS 15及以上版本,可直接使用SwiftUI原生的Image接口,无需调用UIKit:
Text("This is some text with a \(Image("customSFSymbol").renderingMode(.template)) symbol.")
- 方案3:全局修改资源渲染模式
打开Xcode中的Assets.xcassets资源目录,选中对应的customSFSymbol资源,在右侧属性检查器的「Render As」下拉项中选择「Template Image」,后续所有调用该资源的位置默认都会采用模板渲染模式,无需额外添加代码配置。
内容的提问来源于stack exchange,提问作者LeonardoXUI
相关产品推荐
相关产品推荐

