Темный режим наполовину работает в предварительном просмотре, он просто забывает рисовать фон.
Следующий обходной путь позволяет добавить .darkModeFix()
к вашему ContentView()
в функции предварительного просмотра.При желании вы можете добавить false
в качестве параметра для отключения темного режима.
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
Group {
ContentView()
.darkModeFix()
}
}
}
Просто добавьте следующее где-нибудь в вашем проекте:
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
}
}
}
}
extension View {
public func darkModeFix(_ on: Bool = true) -> DarkView<Self> {
DarkView(on) {
self
}
}
}