如何更改整个App的背景颜色?

Szy*_*n W 7 swiftui

有没有一种方法可以在一个地方设置整个应用程序的背景(每个视图的默认背景相同)?例如在SceneDelegate中?

小智 4

创建一个自定义ViewModifier,添加您的颜色,并将其添加到您的视图中。例如,如果您希望所有视图均为橙色,请执行以下操作:

struct BackgroundColorStyle: ViewModifier {

    func body(content: Content) -> some View {        
        return content
            .background(Color.orange)
    }
}
Run Code Online (Sandbox Code Playgroud)

用法是:

Text("Hello world!").modifier(BackgroundColorStyle())
Run Code Online (Sandbox Code Playgroud)

现在,您可以 - 也许应该 - 对此进行扩展以实现明/暗模式。在这种情况下,您可以使用环境变量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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,每次View使用此修改器都会在一个位置定义其背景颜色。如果您想定义边框和背景颜色,也是一样。