I use [[UIScreen mainScreen]setBrightness: ]
(in sdk 5.0) to change the system background light in my app.
The following steps work with my app
Active the app, get the system brightness as default, then save as sysBright
.
Change the brightness with my app, changed brightness, then save as appBright
.
ResignActive app with home button or lock button, set brightness to sysBright
(step 1 value, system default brightness).
Active app again. Then it will repeat the above steps form 1 to 3.
Something is wrong with step 3, when I inactivate the app with the lock button, the function applicationWillResignActive
works well, it can restore the brightness value (sysBright
).
But when I press the home button, it doesn't work anymore. The brightness is still the value I changed in my app. (appBright
)
Does anyone have any idea about it? Thanks for any help ~
Here is the code:
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 is not meant to retain in-app brightness values. It should restore system value after the app resigns active, quits, crashes etc. So officially there is no need to do that in applicationWillResignActive.
But it does't work. It's a bug. In fact it works if you switch to another app (press home button twice and select another app)
Don't waste your time just file a bug report to Apple (I did well).
Unlock screen restores default system brightness. Just press the power button twice and unlock to restore original brightness.
Try this...
- (void)applicationWillResignActive:(UIApplication *)application
{
CGFloat brightness = [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"];
[[UIScreen mainScreen] setBrightness:brightness];
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With