我想改变这种“浅灰色”背景表格的颜色,但.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)
}
}
Run Code Online (Sandbox Code Playgroud)
小智 18
在看到这些解决方案后,我创建了一个修改器供您在 iOS 16 及更低版本中使用。
struct FormHiddenBackground: ViewModifier {
func body(content: Content) -> some View {
if #available(iOS 16.0, *) {
content.scrollContentBackground(.hidden)
} else {
content.onAppear {
UITableView.appearance().backgroundColor = .clear
}
.onDisappear {
UITableView.appearance().backgroundColor = .systemGroupedBackground
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
要使用它,您只需在表单后更新即可。
Form {
Text("Test text")
}
.frame(height: 400)
.modifier(FormHiddenBackground())
Run Code Online (Sandbox Code Playgroud)
上面 Mojtaba Hosseini 接受的答案有效,但 init() 语句不是该UITableView语句的好地方。这是因为它“硬编码”了 ContentView 的 init 参数。在这种情况下,它没有所以一切正常,但是如果将一个@ObservedObject添加到视图中,那么这将破坏 init 函数。
只需将 UITable 语句添加到body,显式返回Form并删除init()。
var body: some View {
UITableView.appearance().backgroundColor = .clear
return Form {...}
}
Run Code Online (Sandbox Code Playgroud)
但是,在 上设置背景颜色Form通常会按预期工作。它在ContentView屏幕上不起作用的事实可能是一个错误。
小智 9
尝试这个
.onAppear {
UITableView.appearance().backgroundColor = .blue
}
Run Code Online (Sandbox Code Playgroud)
appearance()。UITableView.appearance().backgroundColor = .red例如,您可以使用Form将 的背景颜色设置为红色。这可以出现在init视图中,但这会影响每个 List和Form。
或者,您可以使用SwiftUI-Introspect通过执行以下操作来自定义单个:
struct ContentView: View {
@State private var value = ""
var body: some View {
Form {
Section(header: Text("First Name")) {
TextField("First", text: $value)
}
Section(header: Text("Last Name")) {
TextField("Last", text: $value)
}
}
.introspectTableView { $0.backgroundColor = .systemBlue }
.foregroundColor(Color.blue)
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以将以下内容添加到每个部分以使这些部分也变为蓝色:
.listRowBackground(Color.blue)
Run Code Online (Sandbox Code Playgroud)
所有SwiftUI List都由UITableViewiOS中的a支持。因此,您需要更改tableView的背景颜色。但是由于Color和UIColor值略有不同,因此您可以摆脱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)
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用所需的任何背景(包括所有Color)
请注意,顶部和底部的白色区域是安全的,您可以使用.edgesIgnoringSafeArea()修饰符来摆脱它们。
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |