首页 > 解决方案 > 如何在 SwiftUI 中更改表单的背景颜色?

问题描述

我想更改表单的“浅灰色”背景颜色,但.foregroundColor(Color.blue)似乎.background(Color.blue)不起作用

struct ContentView : View {

 @State var value = ""

    var body: some View {
        Form {
            Section(header: Text("First Name")) {
                TextField($value)
            }
            Section(header: Text("Last Name")) {
                TextField($value)
            }
        }.foregroundColor(Color.blue)

    }
}

在此处输入图像描述

标签: iosswiftui

解决方案


一个可行的解决方案:

所有 SwiftUIList都由UITableViewiOS 中的 a 支持。所以你需要改变tableView的背景颜色。但由于ColorUIColor值略有不同,您可以摆脱UIColor.

struct ContentView: View {
    
    init(){
        UITableView.appearance().backgroundColor = .clear
    }
    
    @State var value = ""
    
    var body: some View {
        Form {
            Section(header: Text("First Name")) {
                TextField("First Name", text: $value)
            }
            Section(header: Text("Last Name")) {
                TextField("Last Name", text: $value)
            }
        }
        .foregroundColor(Color.blue)
        .background(Color.yellow)
    }
}

现在你可以使用任何你想要的背景(包括所有Colors)

预习

请注意,那些顶部和底部的白色区域是安全的,您可以使用.edgesIgnoringSafeArea()修饰符来摆脱它们。


恢复

由于UITableView.appearance().backgroundColor适用于全局,您可以使用.onAppear修饰符在不同的视图中更改它(因为它是全局更改)。因此,您可以使用另一个 onAppearonDisappear将其重置为您想要的。

默认颜色为:

UIColor.systemGroupedBackground对于分组样式。和

UIColor.systemBackground素色风格

它们都自动支持暗模式和亮模式。


推荐阅读