2011-11-29 54 views
2

为什么我不能在applicationDidEnterBackground或applicationWillResignActive中设置屏幕亮度?appdelegate方法中的setBrightness?

这是我的代码:

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

无法理解......!它在applicationDidEnterForeground等工作,而不是当我关闭使用主页按钮的应用程序。

由于任何人可以帮助...

+0

如果在完全退出后亮度恢复为默认值,以避免用户感到沮丧,我不会感到惊讶。您的亮度可能会在很短的时间内正确设置。 –

+1

好的建议,但我不认为这是它。我已经在应用程序中将亮度从高变为低,并希望它在应用程序关闭时恢复原始亮度...... –

+0

这是不是已经发生了?据我所知,iOS将简单地重置亮度本身。 –

回答

1

这可能是因为您的应用程序放弃控制权交给操作系统,然后操作系统将根据用户的全局设置控制亮度。如果您想要全局更改亮度设置,则必须访问用户的全球iphone设置并更改它们,但我不确定这是可能的。

当你设置上applicationDidEnterForeground亮度:您的应用程序是在控制了一遍,可以像亮度调节的东西。只要您的应用失去了该控制思想,操作系统就会接管并重新使设备符合用户的全局设置。

希望有所帮助。

+0

是啊,听起来你是对的。你能想到任何解决方法吗?就像是在applicationWillResignActive或其他任何东西之前被调用的东西?难倒! –

+2

虽然...它进入背景,屏幕保持黑暗,虽然我的全局设置的亮度接近满... –

+1

我不得不用一种荒谬的方式来做这件事。由于iOS的限制,降低代理方法的亮度是不可能的,因为代理方法会导致应用程序处于非活动状态。我使用了一个包含一个不透明度为0.9的黑色矩形的imageview,并将其设置为隐藏,而我希望我的应用程序变暗。状态栏也被删除了,因为我无法使矩形变暗。 –

0

我敢肯定,这是与当前版本(该setBrightness调用有两种applicationDidEnterBackground或applicationWillResignActive内无影响)的错误。

我目前做的是类似于你到什么在 - 我的亮度设置为1.0的应用程序处于活动状态,然后在需要时通过修改一个黑色图层的不透明度上的所有其他图形的顶部降低亮度。这样,如果用户暂停应用程序,那么他们的屏幕至少是亮的(而不是应用程序的任意亮度)。

当用户锁定他们的屏幕时,它将恢复到他们iPhone设置的亮度。

相关问题