繁体   English   中英

除了暗模式和亮模式之外,Swift/SwiftUI 中的其他配色方案

[英]Additional ColorScheme in Swift/SwiftUI beside Dark Mode and Light Mode

我正在开发一个通常会在黑暗环境中使用的应用程序,显示器的光输出应该减少到最低限度。 所以我想用真正的黑色背景和灰色文本来设置低对比度。 如果有人在其他环境中使用该应用程序,用户可能会考虑使用具有更高对比度的常用视图 - 例如常用的暗模式或亮模式。 当然,我可以将所有background设置为黑色,将foregroundColor为灰色,但这需要大量代码才能让用户有可能回到通常的明/暗模式。 我的方法是编写ColorSchemeextension ,从

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

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

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

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

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

与此同时,我找到了一个适用于第一个问题的解决方案:与

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

window.overrideUserInterfaceStyle = .evenDarker

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM