在iOS中终止应用时恢复屏幕亮度

时间:2012-10-22 02:11:38

标签: ios

我已经看过以前的帖子,无法确保您可以将屏幕亮度恢复到用户在应用中调整之前的值(即在应用加载并重置为之前捕获屏幕的亮度级别)应用程序终止或进入后台之前的屏幕亮度)。看起来这可能是苹果公司故意做的事情,因为在用户终止时用户不会做出戏剧性的改变。但似乎苹果以某种方式推出了Passbook应用程序。请注意,当您启动Passbook应用程序时,屏幕亮度会增加,以允许扫描仪更好地读取条形码,但是当您点击主页按钮并退出Passbook应用程序时,屏幕亮度将恢复到之前的状态。如果Apple能做到这一点为什么不能呢?任何人都知道Passbook应用程序是如何做到的?

3 个答案:

答案 0 :(得分:2)

这是一个非常简单的机制,有时会在iBooks 1.5+中引入,最后可以在iOS 5中添加+[UIScreen brightness] API,因为它接受0.0-1.0的简单浮点数,存储它是一个明智的选择,并且可以在任何UIApplication委托方法中轻松地进行恢复。事实上,我编写了一个示例应用程序(OOH,Shiny),可以在启动时恢复屏幕亮度,并在退出时保存。

答案 1 :(得分:1)

static CGFloat s_brightness = 0.5f;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    s_brightness = [[UIScreen mainScreen] brightness];
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application
{
    [[UIScreen mainScreen] setBrightness:s_brightness];
}

答案 2 :(得分:0)

在Swift中

static var defaultBrightNess:CGFloat = 0.5;
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool 
{
        AppDelegate.defaultBrightNess = UIScreen.main.brightness;
        UIScreen.main.brightness = 1.0;
        return true
}

func applicationWillEnterForeground(_ application: UIApplication) {
        UIScreen.main.brightness = 1.0
}

func applicationWillResignActive(_ application: UIApplication) {
        UIScreen.main.brightness = CGFloat(AppDelegate.defaultBrightNess)
}