Сначала вам нужно получить доступ к окну, чтобы изменить приложение colorScheme, которое вызывало UserInterfaceStyle
в UIKit
.
Я использовал это в SceneDelegate
:
private(set) static var shared: SceneDelegate?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
Self.shared = self
,,,
}
Затем вынужно привязать действие к переключателю. Итак, вам нужна модель.
struct ToggleModel {
var isDark: Bool = true {
didSet { SceneDelegate.shared?.window!.overrideUserInterfaceStyle = isDark ? .dark : .light }
}
}
Наконец, вам просто нужно переключить переключатель:
struct ContentView: View {
@State var model = ToggleModel()
var body: some View {
Toggle(isOn: $model.isDark) {
Text("is Dark")
}
}
}