SwiftUI预览中的深色模式在Xcode 11.4中没有深色背景

时间:2020-03-29 09:19:12

标签: xcode swiftui

在暗模式下进行预览时,是否有人遇到相同的问题,即Xcode(11.4)不会显示暗背景?

复制步骤:

1)创建一个新项目,一个Single View App

2)将.environment修饰符添加到预览中:

Group {
    ContentView()
        .environment(\.colorScheme, .light)
    ContentView()
        .environment(\.colorScheme, .dark)
}

您得到以下结果:

Xcode preview

3 个答案:

答案 0 :(得分:12)

不建议在环境中设置\.colorScheme,因此请使用.preferedColorScheme修饰符。例如,

ContentView()
    .preferredColorScheme(.dark)

答案 1 :(得分:0)

m-reza-f中的similar question所述,这是Xcode中的错误(在发布此答案时仍处于活动状态)。

我要补充一点,您无需将实际的body代码包装在NavigationView中,而只需将previews的代码PreviewProvider包装在{{1 }}来达到相同的结果:

NavigationView

答案 2 :(得分:-1)

尝试一下:

@available(iOS 13.0, *)
public struct DarkView<Content> : View where Content : View {
    var darkContent: Content
    var on: Bool
    public init(_ on: Bool, @ViewBuilder content: () -> Content) {
        self.darkContent = content()
        self.on = on
    }

    public var body: some View {
        ZStack {
            if on {
                Spacer()
                    .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
                    .background(Color.black)
                    .edgesIgnoringSafeArea(.all)
                darkContent.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity).background(Color.black).colorScheme(.dark)
            } else {
                darkContent
            }
        }
    }
}

@available(iOS 13.0, *)
extension View {
    @available(iOS 13.0, *)
    public func darkModeFix(_ on: Bool = true) -> DarkView<Self> {
        DarkView(on) {
            self
        }
    }
}

然后

yourView()
.environment(\.colorScheme, .dark)
                    .darkModeFix()