我使用[[UIScreen mainScreen]setBrightness: ]
(在sdk 5.0中)更改应用中的系统背景灯。
以下步骤适用于我的应用
激活应用,默认获取系统亮度,然后保存为sysBright
。
使用我的应用更改亮度,更改亮度,然后保存为appBright
。
使用主页按钮或锁定按钮的ResignActive应用程序,将亮度设置为sysBright
(步骤1值,系统默认亮度)。
再次激活应用。然后它将重复上述步骤1至3。
第3步出现问题,当我使用锁定按钮取消激活应用程序时,函数applicationWillResignActive
效果很好,它可以恢复亮度值(sysBright
)。
但是当我按下主页按钮时,它不再起作用了。亮度仍然是我在我的应用程序中更改的值。 (appBright
)
有人对此有任何想法吗?谢谢你的帮助〜
以下是代码:
float appBright,sysBright;
- (void)applicationDidBecomeActive:(UIApplication *)application
{
sysBright = [[UIScreen mainScreen] brightness];
[[NSUserDefaults standardUserDefaults] setFloat:sysBright forKey:@"sysBright"];
[[UIScreen mainScreen] setBrightness:appBright];
}
//doesn't work when i ResignActive with the home button
- (void)applicationWillResignActive:(UIApplication *)application
{
[[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"];
[[UIScreen mainScreen] setBrightness:sysBright];
}
答案 0 :(得分:5)
iOS并不意味着保留应用内亮度值。它应该在应用程序重新激活,退出,崩溃等之后恢复系统值。因此,在applicationWillResignActive中没有必要这样做。
但它不起作用。这是一个错误。事实上,如果您切换到另一个应用程序(按两次主页按钮,然后选择另一个应用程序),它就可以使用
不要浪费你的时间只是向Apple提交错误报告(我做得很好)。
解锁屏幕可恢复默认系统亮度。只需按两下电源按钮并解锁即可恢复原始亮度。
答案 1 :(得分:1)
试试这个......
- (void)applicationWillResignActive:(UIApplication *)application
{
CGFloat brightness = [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"];
[[UIScreen mainScreen] setBrightness:brightness];
}
答案 2 :(得分:0)
有些情况下确实需要暂停应用程序(使其转到后台,就像按下“主页”按钮一样),并且仍然保留先前在屏幕上设置的亮度。< / p>
实施例: 我目前正在进行水下应用(由于科学原因,它在防水盒中用iPhone拍照),而且我们无法访问整个设备屏幕。
水下外壳实现3机械&#34;触摸&#34;在非常具体的地方按钮,我们必须禁用自动锁定功能,因为无法执行滑动手势来解锁设备。
我们仍然需要一种方法来在不使用应用程序时保持电池寿命,即暂停应用程序并设置较低的屏幕亮度。
我们实施的解决方案是:
a)我们告诉用户在设置中关闭自动亮度并禁用自动锁定功能
b)我们在ApplicationDelegate类上将亮度调为100%:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Adjust Brightness to full
[[UIScreen mainScreen] setBrightness:1.0];
}
c)我们通过触摸应用程序按钮执行以下代码,以确保应用程序进入后台(不消耗CPU周期)并且亮度可以降低到更低级别(保留电池):
[[UIScreen mainScreen] setBrightness:0.0]; // Set to low brightness
[[UIApplication sharedApplication] performSelector:@selector(suspend)]; // Simulate Home button
我希望这对某人有帮助。
PS:Apple Human界面指南是一回事,实际应用程序的实际需求是另一回事(您无法提前预测或限制任何内容)。
答案 3 :(得分:0)
根据Apple´s DevForum,这似乎是苹果不愿修复的错误。