这就是我在这个iO7或以后的应用程序中需要做的:
当用户打开我的应用程序,我想得到屏幕亮度值,并打开所有的亮度。当用户离开应用程序时,我希望亮度恢复到以前的值。
到目前为止,我使用的是:
-(void) applicationWillResignActive
{
[[UIScreen mainScreen] setBrightness:oldScreenBrightness];
}
-(void) applicationDidBecomeActive
{
screenBrightness = [UIScreen mainScreen].brightness;
[[UIScreen mainScreen] setBrightness:1.0];
}这很好,除非用户在使用应用程序时通过控制中心调整亮度,在离开应用程序时,它仍然会回到原来的亮度。
因此,我想知道,如果我可以键值,观察UIScreen mainScreen.brightness,并检查它是否被用户更改以省略,将其更改回旧值.
发布于 2014-09-29 23:15:44
我觉得你搞得太复杂了。在您的出路,检查当前的亮度水平。如果是1.0,就把它切换回你开始时得到的任何东西。如果它不是1.0,您可以相当自信地认为用户将其更改为其他东西,所以什么也不做。
也可能最好是为屏幕亮度创建某种常量,以提高代码的可读性和意图。
static const CGFloat kAppConfiguredBrightness = (CGFloat)1.;
-(void)applicationWillResignActive
{
UIScreen* screen = [UIScreen mainScreen];
if (screen.brightness == kAppConfigredBrightness) {
screen.brightness = oldScreenBrightness;
}
}发布于 2015-09-17 03:04:18
根据Apple Developer的文档:
只有在应用程序处于活动状态时,应用程序所做的亮度更改才能有效。当应用程序不在前台时,系统会在适当的时候恢复用户提供的亮度设置。因此,如果您更改了此属性的值,则不需要记录之前的值,并在应用程序移到后台时恢复它。
https://stackoverflow.com/questions/26110334
复制相似问题