我一直在尝试viewController
在 swiftUI 中为整体设置背景颜色,但我无法做到。视图不带属性.backgroundColor
。
我也尝试过使用in的.backgroundColor
属性,它没有使用属性,但它使用了属性。viewController
sceneDelegate
foregroundColor
到目前为止,我发现最好的方法是在 ContentView 主体的顶部创建一个 ZStack 并让第一层有一个颜色,它忽略了安全区域。Apple 将 Color 定义为“后期绑定令牌”,不管它是什么,但它的行为类似于任何其他 View。
struct ContentView: View {
var body: some View {
ZStack {
Color.red
.edgesIgnoringSafeArea(.all)
/// Your Inner View content goes here.
VStack {
Text("Hello")
} // VStack
} // ZStack
} // body View
} // ContentView
注意:注意内部视图内部的内容,因为它可以轻松扩展以填充整个窗口,从而用白色等覆盖背景颜色。例如,流行的NavigationView倾向于扩展到整个窗口,对我来说它倾向于忽略其记录的 .background() 设置。您也可以在这里执行相同的 ZStack 策略。
NavigationView {
ZStack {
Color.red.edgesIgnoringSafeArea(.all)
VStack {
Text("Hello")
} // VStack
} // ZStack
} // NavigationView
您可以使用以下代码更改整个视图控制器颜色
ZStack {
Color.red
.edgesIgnoringSafeArea(.all)
}
并使用此代码更改安全区域背景颜色
ZStack {
Color.red
}
如果您在顶视图上使用背景修饰符 (.background(Color.red)),您将使用一个新视图包裹该视图,该视图的填充或大小为红色背景色。因此,您应该使用 Rectangle() 视图和 Z 堆栈为整个视图设置完整背景,如果需要,请使用 .edgesIgnoringSafeArea
NavigationView {
ZStack {
Rectangle().foregroundColor(.blue).edgesIgnoringSafeArea(.all)
ScrollView {
List()
ForEach(modelExampleList) { modelExample in
Row(model: modelExample)
}
}.frame(height: 200)
}.padding(.leading, 10)
}.navigationBarTitle(Text("ModelExample List"), displayMode: .large)
}
我将它移出ZStack
,然后使用overlay
并且它起作用了。
var body: some View {
NavigationView {
sceneBackgroundColor
.edgesIgnoringSafeArea(.all)
.overlay(myView)
}
}