无法使用SwiftUI实现黑暗模式

时间:2019-06-14 05:06:41

标签: ios swift swiftui xcode11

struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView().environment(\.colorScheme, .dark)
    }
}

我正在使用上面的代码在演示项目上实现暗模式,但无法正常工作。
任何帮助或见识都将不胜感激。

4 个答案:

答案 0 :(得分:6)

它修复了预览,但没有更改我的代码

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Hello, World!")
    }
}



struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        Group {
            ZStack {
                Color.black.edgesIgnoringSafeArea(.all)
                ContentView().environment(\.colorScheme, .dark)

            }
            ContentView().environment(\.colorScheme, .light)
        }
    }
}

答案 1 :(得分:4)

这似乎是Xcode 11.0 beta中的错误。暂时的解决方法是将您的内容包装在NavigationView中。

例如,以下代码在黑暗模式预览中不会生效:

var body: some View {
  Text("Hello World")
}

但是将内容包装在NavigationView中之后,暗模式预览将按预期方式工作:

var body: some View {
  NavigationView {
    Text("Hello World")
  }
}

结果:

enter image description here

答案 2 :(得分:2)

黑暗模式在预览中只能工作一半,只是忘记绘制背景。

以下解决方法可让您在预览功能中将function keyPressLien(event, phone) { // drop the line: var phone = ... // rest is the same! 添加到.darkModeFix()中。您可以选择添加ContentView()作为关闭暗模式的参数。

false

只需在项目中的某些位置添加以下内容:

struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        Group {
            ContentView()
                .darkModeFix()
        }
    }
}

答案 3 :(得分:1)

一个错误。即使执行MyView().colorScheme(.dark)也行不通。
上下文单击(右键单击或Ctrl单击)“播放”按钮(用于模拟运行应用程序)。单击调试预览。打开调试区域。然后,您可以使用“环境覆盖”来配置诸如暗/亮模式,动态类型,可访问性设置等内容。顺便说一句,要打开“环境覆盖”设置,请移至调试器的上方,然后按以下按钮:
Env overrides look similar to a toggle switch