首页 > 解决方案 > 如何在整个 App 中更改背景颜色?

问题描述

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

标签: swiftui

解决方案


创建一个自定义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使用此修饰符的人都在一个地方定义了它们的背景颜色。如果你想定义一个边框和背景颜色,同样的事情。


推荐阅读