【问题标题】:Changing TextEditor background color in SwiftUI for macOS在 SwiftUI for macOS 中更改 TextEditor 背景颜色
【发布时间】:2020-11-28 09:19:34
【问题描述】:

我想在 macOS 上更改 SwiftUI 文本编辑器的背景颜色。 下面的代码(用于 iOS)是否有变体适用于 NSTextField 而不是 UITextView?

谢谢。

struct ContentView: View {
    init() {
        UITextView.appearance().backgroundColor = .clear
    }

    var body: some View {
        TextEditor(text: .constant("Placeholder"))
            .background(Color.red)
    }
}

【问题讨论】:

    标签: swift macos swiftui nstextfield


    【解决方案1】:

    我刚刚在类似问题 here 上发布了该问题的答案

    借助扩展,你可以清除 NSTextView 类的默认背景颜色,然后像这样在 SwiftUI 中使用.background 修饰符

    extension NSTextView {
        open override var frame: CGRect {
            didSet {
                backgroundColor = .clear //<<here clear
                drawsBackground = true
            }
    
        }
    }
    
    struct ContentView: View {
        
        @State var string: String = ""
        
        var body: some View {
            TextEditor(text: $string)
                .textFieldStyle(PlainTextFieldStyle())
                .background(Color.red) //<< here red
        }
    }
    

    【讨论】:

    • 太棒了!也适用于 ios
    【解决方案2】:

    就像这在 swift 中的样子?

    myNSTextField.drawsBackground = true
    myNSTextField.backgroundColor = NSColor.red
    

    怎么样:

    struct ContentView: View {
        @State var myText: String = "blah blah blah"
        var body: some View {
            VStack(alignment: .leading) {
                TextField("Enter text", text: $myText)
                .background(Color.red)
    
            }.padding()
        
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 2021-07-25
      • 2020-03-02
      • 1970-01-01
      • 2021-02-11
      相关资源
      最近更新 更多