在 SwiftUI 中将 swift 应用程序上的所有 Text() 设置为相同颜色

Turn all Text() on swift app to the same color in SwiftUI

我在 Swift Playground 应用程序中多次使用了 Text("") 对象,但我想将所有对象的颜色更改为特定颜色(白色)而不更改每个文本 属性一个一个。有办法吗?

免责声明:我正在 Swift 游乐场

编程

您可以创建自定义 ViewModifier

struct MyTextModifier: ViewModifier {
    func body(content: Content) -> some View {
        content
            .foregroundColor(Color.white)
    }
}

然后你可以在需要的地方应用到Text,你只需要在ViewModifier结构中改变它。

struct ContentView: View {
    var body: some View {
        Text("Your Text")
            .modifier(MyTextModifier())
    }
}

您可以创建自己的 View,它的正文是 Text 并且有一个 color 属性 用作您的 foregroundColor Text。如果您创建 color 属性 static,它将应用于您的 View.

的所有实例

您只需要确保在所有需要相同颜色的地方使用 ColoredText 而不是 Text,如果您更改 ColoredText.color,所有实例都将应用新的文字颜色。

struct ColoredText: View {
    @State static var color: Color = .primary
    @State var text: String

    var body: some View {
        Text(text)
            .foregroundColor(ColoredText.color)
    }
}

如果你想改变所有你可以使用这个:

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Hello World")
            Text("aha")
            Button(action: {}) {
                  Text("Tap here")
              }
            }.colorInvert()
        .colorMultiply(Color.red)
    }
  }