ios - 是否可以仅覆盖表单的暗模式?
问题描述
我想要实现的是具有不同背景颜色的表单。但我希望里面的项目始终使用浅色模式变体(深色文本颜色)。但不是完整的视图。我已经搜索过,但找不到任何解决方案。
我尝试listRowBackground
更改有效项目的背景并preferredColorScheme
使用灯光模式,但这将使完整视图处于灯光模式:
...
Form {
DatePicker(selection: $date, displayedComponents: .date) { ... }
.listRowBackground(Color.yellow)
TextField("Name", text: $name)
.listRowBackground(Color.yellow)
Picker("amount", selection: $amount) {
ForEach(amounts, id: \.self) {
Text($0)
}
}
.listRowBackground(Color.yellow)
Button(action: { ... }) {
Label("More", systemImage: "chevron.up")
}
.listRowBackground(Color.yellow)
}
.preferredColorScheme(.light)
...
解决方案
您可以使用.environment
强制视图的配色方案:
.environment(\.colorScheme, .light)
如果您不想对整个表单执行此操作,则可以仅将其注入嵌套视图:
Form {
Group {
DatePicker(selection: $date, displayedComponents: .date) { ... }
.listRowBackground(Color.yellow)
TextField("Name", text: $name)
.listRowBackground(Color.yellow)
Picker("amount", selection: $amount) {
ForEach(amounts, id: \.self) {
Text($0)
}
}
.listRowBackground(Color.yellow)
Button(action: { ... }) {
Label("More", systemImage: "chevron.up")
}
.listRowBackground(Color.yellow)
}
.environment(\.colorScheme, .light)
}
(或仅针对单个视图)
Form {
// ...
TextField("Name", text: $name)
.listRowBackground(Color.yellow)
.environment(\.colorScheme, .light)
// ...
}
推荐阅读
- php - 升级到 Laravel Spark 6;未定义的方法
- c# - 为什么我不能使用 Process 类启动 Java?
- java - 打印数字并选择正确的 for 循环
- r - 当我在 .RMD 文件中运行 setwd 时,它不起作用
- kubernetes - 无法通过 alpha 阶段获取 kubelet 配置
- python - 从 (x,y) 的范围内随机抽样 n 位,平均到 k?
- function - 如何在每次流程块迭代后安全地清除命名函数中的变量
- gsap - 为什么我的触发器在我的 Greensock TimelineMax 场景中没有正确定位?
- angular - Angular 6 和 Material 能否在对话框中不显示整个组件,而只显示其中的一部分?
- php - 使用 php 调整 url 上的图像大小