如何在 iOS 中为暗模式更改设置动画?

fra*_*eng 5 ios swift

用户可以在应用设置的某一部分切换主题,如下所示。

这是通过更改window.overrideUserInterfaceStyle.

虽然它按预期工作,但更改根本没有动画。整个应用程序会立即进入选定的样式,而不是在 iOS 设置应用程序中平滑更改。

简单地将作业放在completionof中是UIView.animate(withDuration duration: TimeInterval, animations: @escaping () -> Void, completion: ((Bool) -> Void)? = nil)行不通的。

应用设置

Fad*_*ant 7

有一种简单的方法可以通过动画更改应用程序暗模式主题

if let window = UIApplication.shared.keyWindow {
    UIView.transition (with: window, duration: 0.3, options: .transitionCrossDissolve, animations: {
        window.overrideUserInterfaceStyle = .dark //.light or .unspecified
    }, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)