首页 > 解决方案 > 如何在 iOS 中为暗模式更改设置动画?

问题描述

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

这是通过更改来完成的window.overrideUserInterfaceStyle

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

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

应用设置

标签: iosswift

解决方案


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

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

推荐阅读