ios - 如何使用 SwiftUI 将应用程序应用到 iOS 13 深色模式?

标签 ios swift xcode swiftui

当我不设置前景色时,当环境发生变化时,SwiftUI 会自动将对象的颜色采用深色模式。但是,当我设置 foregroundColor 时,例如:

Text("Jason Parker")
    .foregroundColor(Color.black)

SwiftUI 将不再更改对象的颜色。我听说 UIColor 中有系统颜色,但 SwiftUI 的 Color 不包含这些变量。如何使用 SwiftUI 将应用程序引入 iOS 13 深色模式?

最佳答案

我是这样做的。首先,如果您希望使用 UIColor 语义,您可以...是 beta 5 吗?

Color(color: Color(UIColor.systemBackground)

但是,如果您想要为应用程序自定义颜色,则需要利用 colorScheme:

@Environment (\.colorScheme) var colorScheme:ColorScheme

有多种使用方法,我可以使用Color扩展:

extension Color {
    static let yellow = Color.yellow
    static let darkGrey = Color.init(UIColor.darkGray)

    static func backgroundColor(for colorScheme: ColorScheme) -> Color {
        if colorScheme == .dark {
            return yellow
        } else {
            return darkGrey
        }
    }
}

并像这样使用它:

Text(""Hello world!").background(Color.backgroundColor(for: colorScheme))

现在,显然这是一个简化的配色方案,但您应该明白了。

关于ios - 如何使用 SwiftUI 将应用程序应用到 iOS 13 深色模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57700422/

相关文章:

iphone - 将设备添加到配置文件后是否必须重新存档项目?

javascript - Ionic 3 - 内联视频在 iOS 10 上的 native 播放器中全屏打开

ios - Swift AVMutableVideoComposition指令规模

ios - 如何获取Show segue的计时功能和时长

ios - 如何在 Swift 中加粗字符串的一部分?

ios - 适用于 iOS 的 FBSDK : "unrecognized selector sent to instance"

swift - pod 安装后 FirebaseUI Pod 的 Xcode 项目构建错误 "No known class method for selector ' labelColor'"

ios - AFNetworking - 流 0x96c93c0 在打开之前发送事件

Objective-C 修改可变容器中的元素

ios - UIButton: 当isHighlighted = true时,我只能通过滑动手指来调用一个函数