我们目前正在开发一个iOS应用程序,我们需要在单应用程序模式下运行并停用设备锁定。我们想要的是屏幕完全变暗,只要有插座/ mqtt事件或触摸事件,显示屏就会变亮。
到目前为止,一切都有效,唯一不完美的是显示器不会完全关闭:
UIScreen.main.brightness = CGFloat(0.0)
我们如何才能实现这一目标?
答案 0 :(得分:2)
不幸的是,目前没有办法做到这一点。
没有越狱,没有实际的方法来转动屏幕。甚至像你现在所做的那样模仿屏幕关闭也会让你的应用被拒绝。
原因是即使像素为黑色,LED显示屏仍然会打开屏幕背光。
PS:据说新的iPhone 8配备了OLED显示器(如果事实证明是真的)。与当前屏幕不同,oled屏幕在黑色时关闭像素的光(OLED与每个像素具有独立的光,这与LED不同,这就是它关闭的原因)。因此,您的代码将在iphone 8上完美运行。这是硬件更改而非软件更改,因此您无法在代码中对其进行调整。希望这有帮助!
答案 1 :(得分:0)
如果您想要实现“锁定”屏幕效果,我建议您添加UIView
作为整个屏幕的UIViewController
子视图。 UIView
应该具有黑色背景和最小亮度设置。当您从套接字中获取事件时,只需将UIView
动画消失,并将亮度设置为所需的常量。
获得活动时的示例:
overlayView.frame = CGRect(x: 0, y: 0, width: SCREEN_WIDTH, height: SCREEN_HEIGHT)
vc.addSubview(overlayView)
UIView.animate(withDuration: 0.25, delay: 0.0, options: [], animations: {
self.overlayView?.removeFromSuperview
}, completion: { (finished: Bool) in
UIScreen.main.brightness = CGFloat(0.8)
})
我在没有帮助编译器的情况下写这个答案所以如果有一些语法错误请不要介意我。这只是草稿。