SwiftUI控制自动熄屏isIdleTimerDisabled
SwiftUI控制自动熄屏isIdleTimerDisabled

SwiftUI控制自动熄屏isIdleTimerDisabled

在 SwiftUI 中,isIdleTimerDisabled 可以控制“应用空闲时,系统是否允许自动熄屏”。这是 UIApplication 上的一个 Bool 属性。

true 表示禁止空闲计时器,也就是屏幕不会因为用户暂时没有操作而自动变暗、锁定;false 表示恢复系统默认行为。

使用方法:

UIApplication.shared.isIdleTimerDisabled = true

在SwiftUI 中,通常会配合 onAppear 和 onDisappear 使用,进入视图时关闭自动锁屏,离开页面时恢复默认行为。

import SwiftUI

struct LightView: View {
    var body: some View {
        Color.white
            .ignoresSafeArea()
            .onAppear {
                UIApplication.shared.isIdleTimerDisabled = true
            }
            .onDisappear {
                UIApplication.shared.isIdleTimerDisabled = false
            }
    }
}

这段代码的逻辑是,进入视图时 isIdleTimerDisabled 改为 true,离开视图时改为 false。

注意事项

1、它只影响自动熄屏,不等于应用可以在后台无限运行,也不代表系统不会挂起 App。它解决的是屏幕显示问题,不是进程管理问题。

2、属性是应用级别的。如果打开后一直不关闭,用户离开当前视图后,其他视图也可能继续保持不自动熄屏,这通常不是开发者想要的行为。由于该属性属于 UIApplication,它控制的是 app 的 idle timer,而不是某一个单独控件。

总结

系统有一个“空闲计时器”。当用户长时间不触摸屏幕,系统会认为设备处于空闲状态,于是自动变暗并锁屏。

isIdleTimerDisabled 的作用,就是告诉系统:“当前这个 App 正在执行一个需要持续显示内容的任务,不要按空闲逻辑自动熄屏。” Apple 也明确把它归类在 app 的 idle timer 管理里。

相关文章

1、iOS UIApplication类

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注