12

我的应用程序(音乐家节拍器应用程序)中有一个功能可以调暗屏幕以节省电池寿命。要设置亮度,我正在使用:

[UIScreen mainScreen].brightness = 0.1;

我在 viewDidLoad(...) 中保存应用程序启动时的原始亮度并将其保存到我的用户默认值。

在应用程序中更改视图时,我从用户默认值中检索原始亮度并通过调用恢复:

[UIScreen mainScreen].brightness = originalBrightness;

这工作正常。我有显示原始值的 NSLog(...) 消息等...所以该机制有效。

我遇到的问题是如何在按下主页按钮时恢复应用程序退出时的原始亮度。

我在我的应用程序委托方法中添加了类似的代码:

applicationWillResignActive(...)
applicationDidEnterBackground(...)
applicationWillTerminate(...)

他们每个人都有一个方法调用来像以前一样在视图中设置屏幕亮度,并使用类似的 NSLog(...)s 显示检索到的原始亮度......这一切都是正确的。我也进行了调试,并且正在调用设置亮度......但应用程序退出,设备屏幕仍处于较低的、变暗的水平。

最后,如果您点击顶部的“锁定”按钮,然后按主页按钮将其唤醒......亮度是正确的。

我的怀疑是,当我在应用程序退出时设置亮度的调用触发的任何操作或事件都没有通过,可能是由于无效状态或类似情况。

此外,我的应用程序设置为不在后台运行,在 info.plist 中设置为:

Application does not run in background     YES

任何帮助,将不胜感激。

谢谢!

4

3 回答 3

1

iOS 允许该应用程序在退出之前有一点时间。您可以sleep在设置亮度后尝试几分之一秒。

于 2012-02-29T23:42:57.557 回答
0

如果您仔细阅读https://devforums.apple.com/thread/139813,它会说亮度变化不是永久性的。当您按下锁定按钮并再次解锁时,原始用户亮度又恢复了。实际上,如果用户在我的应用程序运行时按下锁定按钮,我必须恢复我的应用程序亮度:

- (void)applicationDidBecomeActive:(UIApplication *)application{
    [self setBrightness];
}
于 2013-07-16T12:27:13.737 回答
0

对此并没有太多的喜悦。解决方法是在 ViewController viewWillDisappear 上重置亮度。不是一个很好的解决方案,但到目前为止我发现的唯一一个可以工作(这已经被打破了多年......)

于 2015-08-30T23:10:47.570 回答