10

我使用[[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];        
}
4

4 回答 4

5

iOS 并不意味着保留应用内亮度值。它应该在应用退出活动、退出、崩溃等后恢复系统值。所以正式在 applicationWillResignActive 中不需要这样做。

但它不起作用。这是一个错误。实际上,如果您切换到另一个应用程序(按两次主页按钮并选择另一个应用程序),它会起作用

不要浪费您的时间,只需向 Apple 提交错误报告(我做得很好)。

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

于 2012-04-22T01:23:40.030 回答
1

尝试这个...

- (void)applicationWillResignActive:(UIApplication *)application
{        
    CGFloat brightness = [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"];
    [[UIScreen mainScreen] setBrightness:brightness];        
}
于 2011-12-20T14:15:00.823 回答
0

根据Apple 的DevForum的说法,这似乎是一个 Apple 不愿意修复的错误。

于 2014-05-07T14:00:22.743 回答
0

在某些情况下,您确实需要暂停应用程序(使其进入后台,例如按下 Home 按钮时)并仍保留您之前在屏幕上设置的亮度。

示例:我目前正在开发一个水下应用程序(出于科学原因,它使用 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 人机界面指南是一回事,实际应用程序的实际需求是另一回事(您无法提前预测或限制任何事情)。

于 2014-03-12T23:18:00.297 回答