7

考虑以下设置:

  • 您有一个简单的应用程序,其中包含一个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 差异中找到任何有意义的参考)?
  • 是否有任何优雅的解决方案,而不是在任何地方覆盖外观和可见性方法?
4

1 回答 1

8

试试看:

(viewControllerToBePresented).modalPresentationCapturesStatusBarAppearance = true
于 2016-05-11T08:33:11.997 回答