应用内的Swift Force暗/亮模式

时间:2019-11-18 00:39:32

标签: ios swift ios13

我希望用户按下按钮并强制更改应用程序内的暗/亮模式, 代码有效,但是需要按两次按钮才能使其正常工作, 很奇怪...谁能看一看?谢谢!

func darkOrLight() {
    let window = UIApplication.shared.keyWindow
    if #available(iOS 13.0, *) {
        if window?.overrideUserInterfaceStyle == .dark {
            window?.overrideUserInterfaceStyle = .light
        } else {
            window?.overrideUserInterfaceStyle = .dark
        }
    } 
}

3 个答案:

答案 0 :(得分:0)

问题解决了, 不要使用overrideUserInterFaceStyle来检查当前的主题模式,

if #available(iOS 13.0, *) {
if UITraitCollection.current.userInterfaceStyle == .dark {
    window?.overrideUserInterfaceStyle = .light
}
else {
    window?.overrideUserInterfaceStyle = .dark
}

}

答案 1 :(得分:0)

func darkOrlightMode(){

    if #available(iOS 13.0, *) {

    if UIApplication.shared.keyWindow!.overrideUserInterfaceStyle == .dark {

        UIApplication.shared.keyWindow!.overrideUserInterfaceStyle = .light

    }
    else {

        UIApplication.shared.keyWindow!.overrideUserInterfaceStyle = .dark

    }
    }
}

Blockquote

答案 2 :(得分:0)

此代码假定仅有的两个值是 darklight。但初始 UIUserInterfaceStyle 值为 unspecified,在这种情况下,它使用当前系统设置。

与其在您的应用中设置“深色”与“浅色”,不如考虑给它们三个选择:“深色”、“浅色”和“系统默认”。