【问题标题】:difference between background color for TextField in SwiftUI between macOS and iOS?macOS和iOS之间SwiftUI中TextField的背景颜色之间的区别?
【发布时间】:2021-03-31 03:58:33
【问题描述】:

我遇到了一个我不知道如何解决的问题。我计划使用 SwiftUI(尽可能)为 macOS 和 iOS 共享代码库。

但是已经有了一些简单的东西,比如为文本字段设置背景颜色,就会有区别

以下代码sn-p:

struct NewTextField : View
{
   @State var d:String = ""
   
   var body: some View
   {
      HStack(content:
      {
         TextField("Date: ", text:$d)
            .foregroundColor(.black)
            .background(Color.green)
         /// ... more views
      }
   } 
}

这是简化的;我在实际应用程序中有多个文本字段,其背景颜色取决于内容。

在 iOS 上看起来不错;完整的文本字段背景设置为所需的颜色;在 macOS 上,TextField 显示为白色背景和彩色边框。

我做错了什么?

【问题讨论】:

  • 嗯,我看的更远了,只是跑过了这一行 .textFieldStyle(PlainTextFieldStyle()) 添加了它 TextField("Date: ", text:$d) .textFieldStyle(PlainTextFieldStyle()) .foregroundColor (.black) .background(Color.green) 它确实创造了想要的效果;只是不明白为什么在 iOS 上不需要它;但在 macOS ...
  • 这是什么? .foregroundColor(.black) 你是说 .foregroundColor(Color.black) 吗?
  • @ElTomato 是的.black 表示Color.black。两种语法都有效。
  • @AlanS 哦,好的。谢谢。对此感到抱歉。

标签: ios macos swiftui textfield


【解决方案1】:

只是为了让它不被回答:

添加

.textFieldStyle(PlainTextFieldStyle()) 

它会产生想要的效果

TextField("Date: ", text:$d)
.textFieldStyle(PlainTextFieldStyle()) 
.foregroundColor(.black) 
.background(Color.green) 

基于这篇文章:SwiftUI customized text field in OSX

【讨论】: