【发布时间】:2012-03-19 11:36:28
【问题描述】:
我的应用(音乐家的节拍器应用)中有一个功能可以调暗屏幕以节省电池寿命。要设置亮度,我使用的是:
[UIScreen mainScreen].brightness = 0.1;
我在 viewDidLoad(...) 中保存应用程序启动时的原始亮度并将其保存到我的用户默认值。
在应用内更改视图时,我从用户默认值中检索原始亮度并通过调用恢复:
[UIScreen mainScreen].brightness = originalBrightness;
这很好用。我有 NSLog(...) 消息显示原始值等...所以该机制有效。
我遇到的问题是如何在按下 Home 按钮时在应用程序退出时恢复原始亮度。
我在我的应用程序委托方法中添加了类似的代码:
applicationWillResignActive(...)
applicationDidEnterBackground(...)
applicationWillTerminate(...)
他们每个人都有一个方法调用来像以前一样在视图中设置屏幕亮度,类似的 NSLog(...)s 显示检索到的原始亮度...而且这一切都是正确的。我也进行了调试,并且正在调用设置亮度...但应用程序退出,设备屏幕仍处于较低的、变暗的水平。
最后,如果你点击顶部的“锁定”按钮,然后按Home键唤醒它......亮度是正确的。
我的怀疑是,当我在应用退出时设置亮度的调用触发的任何操作或事件都没有通过,可能是由于无效状态或类似情况。
另外,我的应用设置为不在后台运行,在 info.plist 中设置为:
Application does not run in background YES
任何帮助将不胜感激。
谢谢!
【问题讨论】:
-
这些是私有 API 吗?我在 UIScreen 类中没有看到 mainWindow 或 mainWindows(错字?)属性。你是说主屏幕吗?
-
是的,我错了。我是'[UIScreen mainScreen].brightness=val;'或 [[UIScreen mainScreen] setBrightness:val];'
-
我很确定没有办法让这个设置在你的应用之外持久化。 Apple 的文档没有具体说明这一点,但我已经看到了另外两个改变亮度的应用程序就是这种情况。有人here 同意。
-
运气好吗?我做了类似的事情,但遇到了同样的问题。哎呀,即使
[UIScreen mainScreen].brightness = 1.0;也不起作用。
标签: iphone brightness mainwindow uiscreen