Swift5中如何根据系统背景颜色选择颜色?

How to chose Color depending on System Background Color in Swift 5?

我目前正在与 SwiftUI Colors 合作。

问题: 我有一个 Card Component,其背景颜色为 systemGray6。这适用于大多数视图 (所有具有 systemBackground 背景颜色的视图).

但是,我有一些 Modal Views 随附 tertiarySystemBackground。这不会更改 LightMode 中的任何内容,但会将 DarkMode 中的背景颜色更改为与 systemGray6 相同。结果,背景和卡片颜色相同,卡片不再可见。

我目前的解决方案:

struct Card: View {
    var isInsideModal: Bool = false

    var body: some View {
        // Some Content
        .background(isInsideModal ? Color.systemGray6 : Color.systemGray5) // I added this in an Extension of Color
    }
}

问题: 是否可以自动执行此行为,而不必始终明确地将所需的 Background Color 传递给 Card View

感谢您的帮助。

您可以在 xcassets 文件夹中创建颜色集。它使您能够根据您的应用程序是在深色模式还是浅色模式下运行来选择不同的外观。