有没有办法以编程方式调整屏幕亮度?
Posted
技术标签:
【中文标题】有没有办法以编程方式调整屏幕亮度?【英文标题】:Is there a way of adjusting the screen brightness programmatically? 【发布时间】:2010-09-23 14:56:36 【问题描述】:我有一个用于摄影目的的 iPhone 应用程序(一种灯箱)。这个应用程序需要尽可能多的亮度。有没有办法以编程方式更改屏幕亮度,然后过一段时间再恢复?
【问题讨论】:
【参考方案1】:编辑:ios 5 现在包含screen brightness API。
[[UIScreen mainScreen] setBrightness:0.5];
上一个答案:
不,此功能不通过公共 APIS 公开。
编辑:请注意,未来可能的 iOS 版本可能会或可能不会在特定 iDevice 上的多任务栏上显示屏幕亮度。
【讨论】:
虽然我也不能说是否是这种情况,因为我在披露专有信息方面达成了某种协议……但主要的第三方肯定是这样的“阅读器”应用程序包含亮度滑块。因此,无论它是否被曝光,人们都在这样做,并且它与应用商店的评论者一起飞行。 他们正在调整文本背景的颜色,而不是实际的屏幕亮度。 感谢您在一年后回到您的答案并更新它:) 有什么方法可以自动取消设置屏幕亮度? (恢复到用户以前的设置?)还是我只需要跟踪它?【参考方案2】:这是可能的,但您的应用很可能会被 App Store 拒绝,因为它使用私有 API。 一个手电筒应用被拒绝了,因为它调整了屏幕亮度,所以我不推荐它。
在 iOS 4.2 中,iPad 将有一个 屏幕亮度调节器 多任务栏,
(正如@coob 所提到的)所以你可以告诉你的用户在那里设置亮度。
您可以做的是创建一个黑色叠加视图,并将其 alpha 设置为或多或少,具体取决于您希望屏幕的亮度。这实际上不会使屏幕变暗/变亮,但会给用户一种错觉。
【讨论】:
只有 iPad,还是 iPhone? 不幸的是,仅在 iPad 上。 注意:这个答案现在已经过时了;从 iOS 5 开始就有一个公共 API。【参考方案3】:这是这个问题的 Swift 答案。
import UIKit
extension UIScreen
static func setMainBrightness(brightness: CGFloat)
guard (0...1).contains(brightness) else
print("Attempt to set the screen brightness to an invalid value: \(brightness) should be between 0 and 1 inclusive.")
return
self.main.brightness = brightness
使用调用它:
UIScreen.setMainBrightness(0.5)
或者忽略我的扩展(我只是为了说明限制而写的)并调用:
UIScreen.main.brightness = 0.5
【讨论】:
当前 (3.1) 斯威夫特:UIScreen.main.brightness = 1.0
以上是关于有没有办法以编程方式调整屏幕亮度?的主要内容,如果未能解决你的问题,请参考以下文章