问题描述
我正在开发一个通常将在黑暗环境中使用的应用程序,并且显示器的光输出应降至最低。因此,我想与黑色背景和灰色文字形成低对比度。
如果有人在其他环境中使用该应用程序,则用户可能会考虑使用具有较高对比度的普通视图-例如普通的暗或亮模式。
当然,我可以将所有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
-如果用户需要使用系统设置。