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

时间:2019-09-29 13:33:55

标签: swiftui

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

2 个答案:

答案 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

demo