Swift / SwiftUI中除了深色模式和浅色模式之外的其他ColorScheme

问题描述

我正在开发一个通常将在黑暗环境中使用的应用程序,并且显示器的光输出应降至最低。因此,我想与黑色背景和灰色文字形成低对比度。 如果有人在其他环境中使用该应用程序,则用户可能会考虑使用具有较高对比度的普通视图-例如普通的暗或亮模式。 当然,我可以将所有background设置为黑色,将foregroundColor设置为灰色,但这将需要大量代码才能使用户有可能改回常规的亮/暗模式。 我的方法是从{p>开始,将extension写入ColorScheme

public extension ColorScheme {
static let evendarker = ColorScheme.dark
}

并从那里调整颜色值。 在我的想象中,这应该创建了.dark的副本。我可以打电话

  let contentView = ContentView()
        .environment(\.colorScheme,.evendarker)

并且它的构建没有问题,不幸的是,它确实显示了系统设置(在设备上定义),而不是暗模式的副本。使用.dark.light调用同一视图会覆盖系统设置。

此外,我在ColorScheme中找不到任何可能值的列表或文档-例如如何将认的背景颜色从灰色覆盖为黑色。 有没有人得到这个或类似的东西上班?

解决方法

同时,我找到了一个解决第一个问题的解决方案: 使用

SQL.AddParam("@FromDate",FromDate + 1)

public extension UIUserInterfaceStyle {
static let evenDarker = UIUserInterfaceStyle.dark }

效果更好,它将window.overrideUserInterfaceStyle = .evenDarker 复制到.dark-与使用ContentView()的环境设置不同,它还可以选择使用.evenDarker-如果用户需要使用系统设置。