将UIApplication.shared.isIdleTimerDisabled设置为false时,屏幕变为黑暗

时间:2016-12-26 10:02:37

标签: ios swift uiapplication

我希望屏幕在播放音频时总是亮,并在完成音频时变暗,两分钟后我没有点击屏幕(我在设置中设置了自动锁定),实现如下代码。

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        UIApplication.shared.isIdleTimerDisabled = true
    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        UIApplication.shared.isIdleTimerDisabled = false
    }

但是当完成一个超过两分钟的音频时,结果是屏幕立即变暗。

如何修复它,还是这个ios bug?

由于

1 个答案:

答案 0 :(得分:1)

似乎没有机会重置空闲计时器,因此您的设备会在isIdleTimerDisabled - 属性设置后立即关闭。

然而,您仍然可以尝试实施自己的计时器,以便在合适的时间关闭它。

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    DispatchQueue.main.asyncAfter(deadline: .now() + interval, execute: {
        UIApplication.shared.isIdleTimerDisabled = false
    })
}

不幸的是,仍无法检查当前idleTimer时间来动态计算interval值。