在macOS的SwiftUI中更改TextEditor背景颜色

时间:2020-08-08 04:48:14

标签: swift macos swiftui nstextfield

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

谢谢。

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

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

2 个答案:

答案 0 :(得分:2)

我刚刚在类似问题 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
    }
}

答案 1 :(得分:-3)

像这样快速显示吗?

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()
    
    }
}