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

Posted

技术标签:

【中文标题】在 SwiftUI 中将 swift 应用程序上的所有 Text() 设置为相同的颜色【英文标题】:Turn all Text() on swift app to the same color in SwiftUI 【发布时间】:2020-05-13 09:51:46 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

您可以创建自己的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)
    

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于在 SwiftUI 中将 swift 应用程序上的所有 Text() 设置为相同的颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 5 在 SwiftUI 中将颜色与 RGB 或十六进制值一起使用? [复制]

在 SwiftUI 中将 ObservableObject 链接到 DatePicker

AppKit 上的 SwiftUI - 在弹出窗口中将焦点设置为 TextField

iPad 上的 Swift Playgrounds 无法按预期使用 SwiftUI 代码

SwiftUI - 从 Swift 类启动的可观察对象不会更新 ContentView() 上的 @ObservedObject

如何在 Swift 中将可转换属性保存到 Core Data