有没有一种编程方式调节屏幕亮度?

42

我有一个用于摄影目的(类似灯箱)的iPhone应用程序。这个应用程序需要尽可能多的亮度。是否有一种方法可以通过编程方式改变屏幕亮度,然后在一段时间后恢复它?

3个回答

78

编辑:iOS 5现在包括一个屏幕亮度 API

[[UIScreen mainScreen] setBrightness:0.5];

之前的回答:

不,这种功能无法通过公共API公开。

编辑:请注意,未来可能发布的某个iOS版本可能会在一个特定的iDevice上在多任务栏中显示屏幕亮度或可能不会显示。


虽然我也不能确定是否如此,因为我有关于专有资料披露的某项协议......但是,第三方主要的“读者”应用程序确实包含亮度滑块。所以无论是否公开,人们都在这样做,并且已经通过应用商店的审核。 - Dan Ray
5
他们正在调整文本背景的颜色,而不是实际屏幕亮度。 - Alastair Stuart
9
谢谢你回来更新一年前的答案 :) - Sid
有没有自动取消屏幕亮度(恢复到用户之前的设置)的方法?还是我必须要跟踪它? - Andrew K

5
这里有一个关于这个问题的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

1
当前(3.1)的Swift代码:UIScreen.main.brightness = 1.0 - bshirley

5
可能会有这个可能,但是你的应用很可能会因为使用私有API而被App Store拒绝。例如,一个手电筒应用程序因为调整屏幕亮度而被拒绝,所以我不建议这样做。
在iOS 4.2中,iPad将在多任务栏中拥有一个屏幕亮度调节器(如@coob所提到的),因此您可以告诉用户在那里设置亮度。
您可以创建一个黑色遮罩视图,并根据需要将其alpha设置为更多或更少,以控制屏幕的亮度。这实际上并不会使屏幕变得更亮/更暗,但它会给用户一种错觉。

只有iPad,还是也包括iPhone? - openfrog
仅限于iPad,很遗憾。 - Emil
3
抱歉,我能理解您的请求,但是请告诉我需要翻译哪些内容。 - ToolmakerSteve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接