【问题标题】: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
}
}
【解决方案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()
}
}