Pular para o conteúdo
Skip

ColorScheme

Este conteúdo não está disponível em sua língua ainda.

Skip support for SwiftUI.ColorScheme.

The following example screens and source code is from SkipUI’s Showcase sample app ColorSchemePlayground.swift

import SwiftUI
struct ColorSchemePlayground: View {
@State var isDarkMode = false
@State var preferredColorScheme = ""
@State var isPresented = false
var body: some View {
VStack(spacing: 16) {
VStack {
Text("This text is in \(isDarkMode ? "Dark" : "Light") mode")
.font(.largeTitle)
Button("Toggle") {
isDarkMode = !isDarkMode
}
.buttonStyle(.borderedProminent)
}
.padding(32)
.background()
.padding(32)
.colorScheme(isDarkMode ? .dark : .light)
Picker(".preferredColorScheme", selection: $preferredColorScheme) {
Text("System").tag("")
Text("Light").tag("light")
Text("Dark").tag("dark")
}
NavigationLink("Push") {
Text("Pushed")
}
Button("Present") {
isPresented = true
}
}
.preferredColorScheme(namedColorScheme(for: preferredColorScheme))
.sheet(isPresented: $isPresented) {
ColorSchemeSheetView()
}
.toolbar {
PlaygroundSourceLink(file: "ColorSchemePlayground.swift")
}
}
}
private struct ColorSchemeSheetView: View {
@Environment(\.dismiss) var dismiss
@State var preferredColorScheme = ""
var body: some View {
NavigationStack {
VStack(spacing: 16) {
Picker(".preferredColorScheme", selection: $preferredColorScheme) {
Text("System").tag("")
Text("Light").tag("light")
Text("Dark").tag("dark")
}
NavigationLink("Push") {
Text("Pushed")
}
}
.preferredColorScheme(namedColorScheme(for: preferredColorScheme))
.navigationTitle("Sheet")
.toolbar {
Button("Dismiss") {
dismiss()
}
}
}
}
}
private func namedColorScheme(for string: String) -> ColorScheme? {
switch string {
case "light":
return .light
case "dark":
return .dark
default:
return nil
}
}