考虑以下设置:
- 您有一个简单的应用程序,其中包含一个
UINavigationController
子类和一个UIViewController
子类。 - UINavigationController 覆盖
preferredStatusBarStyle()
方法并返回UIStatusBarStyle.LightContent
- UIViewController 覆盖
prefersStatusBarHidden()
方法并返回true
在 iOS 8.0 - 8.2 中,当另一个UINavigationController
(具有另一个不覆盖任何内容的 UIViewController)呈现为modalPresentationStyle
设置为UIModalPresentationStyle.OverCurrentContext
时,新呈现的控制器将继承状态栏的外观和可见性。
但在 iOS 8.3 中,情况完全相同——新出现的控制器不继承状态栏的外观和可见性
另一个例子是展示一个实例UIImagePickerController
——在状态栏外观方面发生了完全相同的事情。
问题是:
- 为什么在 iOS 8.3 中新出现的控制器没有继承状态栏的外观?
- 发生了什么变化(我无法在 iOS 8.2 到 8.3 API 差异中找到任何有意义的参考)?
- 是否有任何优雅的解决方案,而不是在任何地方覆盖外观和可见性方法?