[英]applicationWillResignActive and setBrightness not working?
[英]IOS5 setBrightness didn't work with applicationWillResignActive
我使用[[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];
}
iOS并非要保留应用内亮度值。 在应用程序退出活动,退出,崩溃等之后,它应该恢复系统值。因此,正式而言,无需在applicationWillResignActive中执行该操作。
但这不起作用。 这是一个错误。 实际上,如果您切换到另一个应用程序(两次按主屏幕按钮并选择另一个应用程序),则可以使用
不要浪费时间,只需向Apple提交错误报告(我做的很好)。
解锁屏幕可恢复默认的系统亮度。 只需按两次电源按钮并解锁即可恢复原始亮度。
尝试这个...
- (void)applicationWillResignActive:(UIApplication *)application
{
CGFloat brightness = [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"];
[[UIScreen mainScreen] setBrightness:brightness];
}
在某些情况下,您确实需要挂起该应用程序(使其进入后台,例如按“主页”按钮时),并且仍然保留您先前在屏幕上设置的亮度。
示例:我目前正在水下应用程序中(出于科学原因,它在防水的情况下使用iPhone拍摄照片),但我们无法访问整个设备的屏幕。
水下外壳在非常特定的位置实现了3个机械“触摸”按钮,我们必须禁用自动锁定功能,因为无法执行滑动手势来解锁设备。
当不使用应用程序时,我们仍然需要一种方法来保存电池寿命,即挂起应用程序并设置较低的屏幕亮度。
我们实施的解决方案是:
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界面指南是一回事,而实际应用程序的实际需求是另一回事(您无法预先预测或限制任何事情)。
根据Apple的DevForum的说法,这似乎是Apple不愿意修复的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.