2

为什么我不能在 applicationDidEnterBackground 或 applicationWillResignActive 中设置屏幕亮度?

这是我的代码:

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

看不懂……!?它适用于 applicationDidEnterForeground 等,而不是当我使用主页按钮关闭应用程序时。

感谢任何可以提供帮助的人...

4

3 回答 3

1

这可能是因为您的应用正在放弃对操作系统的控制,然后操作系统将根据用户的全局设置控制亮度。如果要全局更改亮度设置,则必须访问用户的全局 iphone 设置并更改它们,我不确定这是否可行。

当您在 applicationDidEnterForeground 上设置亮度时:您的应用程序再次受到控制,并且可以调整亮度等内容。一旦您的应用程序失去了这种控制思想,操作系统就会接管并使设备重新符合用户的全局设置。

希望有帮助。

于 2011-11-29T21:18:22.753 回答
1

如果你想改变亮度,你应该这样做:

func applicationWillResignActive(_ application: UIApplication) {
        DispatchQueue.main.async {
            UIScreen.main.brightness = 0.5
        }
    }
}
于 2021-07-15T16:56:00.170 回答
0

我很确定这是当前版本的错误(setBrightness 调用在 applicationDidEnterBackground 或 applicationWillResignActive 内部都没有影响)。

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

当用户锁定屏幕时,屏幕会恢复到 iPhone 设置中的亮度。

于 2011-12-24T01:41:50.020 回答