【问题标题】:Additional ColorScheme in Swift/SwiftUI beside Dark Mode and Light ModeSwift/SwiftUI 中除深色模式和浅色模式之外的其他 ColorScheme
【发布时间】:2020-12-23 19:45:54
【问题描述】:

我正在开发一个通常将在黑暗环境中使用的应用程序,并且显示器的光输出应降至最低。所以我想要一个低对比度的黑色背景和灰色文本。 如果有人在另一个环境中使用该应用程序,则用户可能会考虑使用具有更高对比度的常规视图 - 例如通常的暗模式或亮模式。 当然,我可以将所有backgrounds 设置为黑色,将foregroundColors 设置为灰色,但这需要大量代码才能让用户有可能返回到通常的亮/暗模式。 我的方法是写一个extensionColorScheme,以

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

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

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

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

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

【问题讨论】:

    标签: swift swiftui color-scheme ios-darkmode


    【解决方案1】:

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

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

    window.overrideUserInterfaceStyle = .evenDarker
    

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

    【讨论】:

      猜你喜欢
      • 2020-04-13
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 2021-07-01
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      相关资源
      最近更新 更多