在 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 管理里。
