applicationWillResignActive和setBrightness无法正常工作?

Ada*_*ite 27 iphone delegates brightness ios

我使用[[UIScreen mainScreen] setBrightness:](在sdk 5.0中)更改我的应用程序中的系统背景灯.

以下步骤适用于我的应用:

  1. 激活应用程序,将系统亮度设置为默认值,然后另存为sysBright.

  2. 使用我的应用更改亮度,更改亮度,然后另存为appBright.

  3. 使用主页按钮或锁定按钮ResignActive应用程序,将亮度设置为sysBright(步骤1值,系统默认亮度).

  4. 再次激活应用.然后它将重复上述步骤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];        
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

Tib*_*abo 11

我在这里回答了类似的问题:IOS5 setBrightness无法与applicationWillResignActive一起使用

iOS并不意味着保留应用内亮度值.它应该在应用程序重新激活,退出,崩溃等后恢复系统值.因此,在applicationWillResignActive中没有必要这样做.

但它不起作用.这是一个错误.事实上,如果您尝试切换到另一个应用程序,它会起作用.尝试按两次主页按钮,亮度消失.

不要浪费你的时间只是向Apple 提交错误报告(我做得很好).

解锁屏幕可恢复默认系统亮度.只需按两下电源按钮并解锁即可恢复原始亮度.

更新:我的错误报告已关闭,因为据Apple称,这不是一个错误.真奇怪.


Suh*_*tel 0

当您点击主页按钮时,您的应用程序不会退出活动状态,而是进入“后台模式”,并具有您需要定义的自己的委托方法:

- (void)applicationDidEnterBackground:(UIApplication *)application
Run Code Online (Sandbox Code Playgroud)

像这样的东西(除了applicationDidBecomeActive:委托方法之外)应该得到预期的行为:

- (void)applicationDidEnterBackground:(UIApplication *)application
{        
    sysBright = [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"];
    [[UIScreen mainScreen] setBrightness:sysBright]; 
}
Run Code Online (Sandbox Code Playgroud)

  • 尝试了你的新建议,但仍然没有运气。我可以在 applicationDidEnterBackground 方法中 NSLog 正确的 sysBright 值,但它实际上不会改变亮度。当我使用相同的代码重新打开应用程序时,applicationWillEnterForeground 中的亮度确实发生了变化!很困惑! (2认同)