是否可以在一个地方设置整个应用程序的背景(每个视图的默认背景相同)?例如在 SceneDelegate ?
中答案 0 :(得分:2)
创建自定义ViewModifier
,添加颜色,然后将其添加到视图中。例如,如果您希望所有视图均为橙色,请执行以下操作:
struct BackgroundColorStyle: ViewModifier {
func body(content: Content) -> some View {
return content
.background(Color.orange)
}
}
用途是:
Text("Hello world!").modifier(BackgroundColorStyle())
现在,您可以-也许应该-对此进行扩展以适用于明/暗模式。在这种情况下,您可以使用环境变量ColorSchmem
:
struct BackgroundColorStyle: ViewModifier {
@Environment (\.colorScheme) var colorScheme:ColorScheme
func body(content: Content) -> some View {
if colorScheme == .light {
return content
.background(Color.darkGrey)
} else {
return content
.background(Color.white)
}
}
}
无论哪种方式,每个使用此修饰符的View
的背景颜色都定义在一个位置。如果要定义边框和背景色,则同样。
答案 1 :(得分:0)
import SwiftUI
struct TestView: View {
var body: some View {
ZStack {
Rectangle()
.foregroundColor(.blue)
.edgesIgnoringSafeArea(.all)
Text("Hello World!")
.foregroundColor(.white)
}
}
}
ZStack和Rectangle(),设置foregroundColor和edgesIgnoringSafeArea