SwiftUI - 如何在文本视图中更改自定义 SF 符号的颜色?

Posted

技术标签:

【中文标题】SwiftUI - 如何在文本视图中更改自定义 SF 符号的颜色?【英文标题】:SwiftUI - How to change the color of a custom SF symbol in a Text View? 【发布时间】:2021-05-13 08:38:08 【问题描述】:

所以,我在 SwiftUI 视图中有一个文本,其中有一个自定义 SF 符号:

Text("This is some text with a   \(Image(uiImage: UIImage(named: "customSFSymbol")!))  symbol.")

问题如下:

我想让所有视图都变成白色,但是当我将 .foregroundColor(Color.white) 添加到视图时,SF 符号保持黑色。

你可以看到它现在的样子here

提前感谢您的帮助!

【问题讨论】:

如果你使用.withTintColor(_:renderingMode:)会发生什么,像这样:.withTintColor(UIColor.white, renderingMode: .alwaysOriginal) 您可以将.renderingMode(.template)添加到Image =>Text("This is some text with a \(Image(uiImage: UIImage(named: "customSFSymbol")!).renderingMode(.template)) symbol.") 非常感谢@CédricBhr!效果很好! 【参考方案1】:

您可以简单地将.renderingMode(.template) 添加到Image

Text("This is some text with a   \(Image(uiImage: UIImage(named: "customSFSymbol")!).renderingMode(.template))  symbol.")

【讨论】:

【参考方案2】:

你可以这样使用

struct ContentView: View 
    var body: some View 
        Text("This is some text with a ").foregroundColor(Color.red) + imageText + Text("symbol.").foregroundColor(Color.red)
    
    
    @ViewBuilder
    var imageText: Text 
        Text("\(Image(systemName: "square.and.pencil"))")
            .foregroundColor(Color.blue)
    

【讨论】:

以上是关于SwiftUI - 如何在文本视图中更改自定义 SF 符号的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何实现一个自定义属性包装器,它将发布 SwiftUI 的更改以重新呈现它的视图

如何在 SwiftUI 视图中包装 UIBarButtonItem?

OSX 中的 SwiftUI 自定义文本字段

在 SwiftUI 中更改 Text 视图的文本

如何从自定义视图的类中更改文本视图

如何使用 SwiftUI 打开通知操作的自定义视图?