Colors 如何在SwiftUI中自定义系统背景色?

Colors 如何在SwiftUI中自定义系统背景色?,colors,swiftui,Colors,Swiftui,systemBackground和systemGroupedBackground颜色在大多数情况下都很好,但是我有一个项目,我想在其中自定义背景-特别是对于DarkMode 到目前为止,我所发现的任何程度的修改的唯一选择是以下内容——这并不会改变很多事情 extension Color { static let systemGroupedBackground = Color(UIColor.systemGroupedBackground) static let secondary

systemBackground和systemGroupedBackground颜色在大多数情况下都很好,但是我有一个项目,我想在其中自定义背景-特别是对于DarkMode

到目前为止,我所发现的任何程度的修改的唯一选择是以下内容——这并不会改变很多事情

extension Color {
    static let systemGroupedBackground = Color(UIColor.systemGroupedBackground)
    static let secondarySystemGroupedBackground = Color(UIColor.secondarySystemGroupedBackground)
}
我想做的事情如下(在资源中创建自定义颜色后):


这显然不起作用。是否可以修改系统背景颜色?如果是这样,怎么做?

在资产文件夹中创建自己的颜色会起作用,但
color(UIColor.gtSystemBG)
不会起作用(您将
gtSystemBG
定义为
color
,而不是
UIColor

相反,只需直接将
systemGroupedBackground
定义为
颜色

static let gtSystemBG = Color("GTSystemBackground") /// Color
static let systemGroupedBackground = Color(UIColor.gtSystemBG) /// Type 'UIColor' has no member 'gtSystemBG'
struct ContentView: View {
    var body: some View {
        Rectangle()
            .fill(Color.systemGroupedBackground)
            .frame(width: 100, height: 100)
    }
}

extension Color {
    static let systemGroupedBackground = Color("GTSystemBackground")
}
结果:


这回答了你的问题吗?不,没有。谢谢。这对自定义颜色很好,但我想自定义的是暗模式的默认颜色。我可以使用ZStack给视图的背景上色,但是一旦我在视图中引入了一个列表,默认的颜色就会占据主导地位。@forrest所以这就是你想要做的!然而,我认为没有办法覆盖系统颜色。相反,使用
appearance()
更改列表的颜色-例如
UITableView.appearance().backgroundColor
。对于扩展自定义,您可能需要。
struct ContentView: View {
    var body: some View {
        Rectangle()
            .fill(Color.systemGroupedBackground)
            .frame(width: 100, height: 100)
    }
}

extension Color {
    static let systemGroupedBackground = Color("GTSystemBackground")
}