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

yvfmudvl  于 2023-04-04  发布在  Swift
关注(0)|答案(4)|浏览(190)

我在Swift Playground应用中多次使用Text(“”)对象,但我想将所有对象的颜色更改为特定颜色(白色),而不逐个更改每个Text属性。有没有方法可以做到这一点?

**免责声明:**我在Swift Playground编程

ghhkc1vu

ghhkc1vu1#

您可以创建自定义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())
    }
}
tkqqtvp1

tkqqtvp12#

您可以创建自己的View,其主体是Text,并且具有color属性,您可以将其用作TextforegroundColor。如果您将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)
    }
}
fd3cxomn

fd3cxomn3#

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

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

pw9qyyiw4#

如果你的整个应用都是SwiftUI,那么你可以在根应用foregroundColor修饰符。这将使应用中的所有文本变为红色,除非你在需要的地方使用foregroundColor指定其他方式。

struct MyApp: App {

    var body: some Scene {
        WindowGroup {
            MyAppContentView()
                .foregroundColor(.red)
        }
    }
}  

struct MyAppContentView: View {
    var body: some View {
        Text("This is red - the default")
        Text("This is blue")
            .foregroundColor(.blue)
    }
}

相关问题