-->

iOS版是否发送通知时,该系统改变屏幕亮度?(Does iOS send notifications

2019-07-19 08:24发布

问题是,我的阅读应用程序有一个按钮,将其放入黑暗的主题模式。 亮度得到由10%减少。 当用户返回到正常模式时,它被设置回想起亮度。 但在此期间的实际系统的亮度可能发生变化,由于自动亮度调整,甚至用户去设置和改变它。

与亮度属性的问题是,你只能查询实际的屏幕亮度,无论您设置情况只是暂时的,直到用户锁定屏幕。 一旦解锁所述系统恢复到系统的亮度。

如果在系统的亮度发生变化,这将是有益的iOS会发送通知。 找不到在文档上的事。

Answer 1:

搜索UIScreenBrightnessDidChangeNotification这是一部分UIScreen类。 它可从5.0的iOS及以上。



Answer 2:

如果你想重新设置亮度返回到程序上的值时,该设备解锁,观察UIApplicationDidBecomeActiveNotification通知,并在您选择所需级别设置亮度回来。

我已经做了这整个事情的亮度一些调查研究,并在这里是我的发现:

所述UIScreenBrightnessDidChangeNotification被调用只有当系统改变亮度或当用户改变从控制面板或设置的亮度。 而不是当你编程改变亮度。

我从这个苹果文档假设这里 (见下文)是你将它设置编程后的亮度不会改变了。

由一个应用程序作出亮度变化保持有效,直到该设备被锁定,而不管该应用程序是否是关闭的。 该系统的亮度(其中用户可以在设置或控制中心中设置)被恢复的下一个时间的显示被接通。

但是我发现这是不正确的(或我误解的话)。 亮度是变化的(和UIScreenBrightnessDidChangeNotification不会被调用)后,您编程设置亮度。 然而,当系统认为它应该增加或降低亮度(因环境亮度的变化)*仅被调用。 如果环境的亮度保持不变,你把它编程屏幕将保持一样明亮。

这是什么意思? 那么,两件事情:

  • 如果你想保持亮度的设置它编程的水平,无论是环境的变化,你必须观察UIScreenBrightnessDidChangeNotification和亮度复位到所需的级别每次被称为时间。
  • 如果你想回到“系统”的亮度,以及你真的不能,因为你根本无法分辨系统的亮度会是什么,如果环境改变发生(因为你每一次将其复位)。 您有这2个选项。
    1. 记住,你的亮度设置编程的亮度,并设置回该值前。 要么
    2. 把亮度调到0.5,并让系统以它的工作。

在“危险”在这两种情况是,它会留在你设置它,直到检测到环境亮度变化值。

*共有2个特例......当您将亮度设置为0.0,系统认为它应该降低亮度什么都不会发生,因为它已经在0.0。 其次,当你把它设置为1.0,它将停留在1.0,无论环境如何变化。



文章来源: Does iOS send notifications when the system changes the screen brightness?