问题是,我的阅读应用程序有一个按钮,将其放入黑暗的主题模式。 亮度得到由10%减少。 当用户返回到正常模式时,它被设置回想起亮度。 但在此期间的实际系统的亮度可能发生变化,由于自动亮度调整,甚至用户去设置和改变它。
与亮度属性的问题是,你只能查询实际的屏幕亮度,无论您设置情况只是暂时的,直到用户锁定屏幕。 一旦解锁所述系统恢复到系统的亮度。
如果在系统的亮度发生变化,这将是有益的iOS会发送通知。 找不到在文档上的事。
问题是,我的阅读应用程序有一个按钮,将其放入黑暗的主题模式。 亮度得到由10%减少。 当用户返回到正常模式时,它被设置回想起亮度。 但在此期间的实际系统的亮度可能发生变化,由于自动亮度调整,甚至用户去设置和改变它。
与亮度属性的问题是,你只能查询实际的屏幕亮度,无论您设置情况只是暂时的,直到用户锁定屏幕。 一旦解锁所述系统恢复到系统的亮度。
如果在系统的亮度发生变化,这将是有益的iOS会发送通知。 找不到在文档上的事。
搜索UIScreenBrightnessDidChangeNotification
这是一部分UIScreen
类。 它可从5.0的iOS及以上。
如果你想重新设置亮度返回到程序上的值时,该设备解锁,观察UIApplicationDidBecomeActiveNotification
通知,并在您选择所需级别设置亮度回来。
我已经做了这整个事情的亮度一些调查研究,并在这里是我的发现:
所述UIScreenBrightnessDidChangeNotification
被调用只有当系统改变亮度或当用户改变从控制面板或设置的亮度。 而不是当你编程改变亮度。
我从这个苹果文档假设这里 (见下文)是你将它设置编程后的亮度不会改变了。
由一个应用程序作出亮度变化保持有效,直到该设备被锁定,而不管该应用程序是否是关闭的。 该系统的亮度(其中用户可以在设置或控制中心中设置)被恢复的下一个时间的显示被接通。
但是我发现这是不正确的(或我误解的话)。 亮度是变化的(和UIScreenBrightnessDidChangeNotification
不会被调用)后,您编程设置亮度。 然而,当系统认为它应该增加或降低亮度(因环境亮度的变化)*仅被调用。 如果环境的亮度保持不变,你把它编程屏幕将保持一样明亮。
这是什么意思? 那么,两件事情:
UIScreenBrightnessDidChangeNotification
和亮度复位到所需的级别每次被称为时间。 在“危险”在这两种情况是,它会留在你设置它,直到检测到环境亮度变化值。
*共有2个特例......当您将亮度设置为0.0,系统认为它应该降低亮度什么都不会发生,因为它已经在0.0。 其次,当你把它设置为1.0,它将停留在1.0,无论环境如何变化。