背景和前景的 SwiftUI TextField 颜色问题

SwiftUI TextField color issue with background and foreground

我正在尝试为我的文本字段设置背景颜色,它似乎可以很好地设置文本字段周围的填充区域,但不适用于实际的文本字段

struct PrimaryTextField: View {
    var initialText: String
    @Binding var key: String
    var body: some View {
        VStack {
            TextField(initialText, text: $key)
                .padding()
                .font(.title3)
                .frame(maxWidth: .infinity)
                .background(Color("TextFieldBGColor"))
                .cornerRadius(50.0)
                .shadow(color: Color.black.opacity(0.08), radius: 60, x: 0.0, y: 16)
                .accentColor(Color("AccentColor"))
                .textFieldStyle(.roundedBorder)
        }
    }
}

以上是我使用的编码。下面是图片 Light mode dark mode

如何将白色文本域变成灰色文本域(浅色模式下)?

我尝试将前景颜色更改为 TextFieldBGColor,但它正在更改我不想更改的文本字段中的文本颜色。

SwiftUI 的 TextField 拥有一个 TextFieldStyle 属性,它控制 TextField 的 UI 的某些方面 - 这是负责 TextView 边框和添加背景的内容。不确定这是否正是您正在寻找的效果,但您可以简单地将修饰符 .textFieldStyle 添加到 TextField 以删除添加的样式,这将删除 TextField'的背景颜色。如果您想要原来的边框,您可能必须使用 .background 修饰符将其添加回自定义。

TextField(initialText, text: $key)
            .textFieldStyle(.plain)      <------ Added here
            .padding()
            .font(.title3)
            .frame(maxWidth: .infinity)
            .background(Color("TextFieldBGColor"))
            .cornerRadius(50.0)
            .shadow(color: Color.black.opacity(0.08), radius: 60, x: 0.0, y: 16)
            .accentColor(Color("AccentColor"))
            .textFieldStyle(.roundedBorder)

在此处阅读有关 TextFieldStyle 协议的更多信息:

https://developer.apple.com/documentation/swiftui/textfieldstyle