请考虑以下设置:
您有一个具有单个UINavigationController
子类和单个UIViewController
子类的简单应用程序。
UINavigationController覆盖preferredStatusBarStyle()
方法并返回UIStatusBarStyle.LightContent
UIViewController覆盖prefersStatusBarHidden()
方法并返回true
在iOS 8.0-8.2中,如果在UINavigationController
设置为modalPresentationStyle
的情况下显示另一个UIModalPresentationStyle.OverCurrentContext
(具有另一个不覆盖任何内容的UIViewController),则新显示的控制器将继承状态栏的外观和可见性。
但在iOS 8.3中,情况完全相同-新提供的控制器不会继承状态栏的外观和可见性
另一个示例是呈现UIImagePickerController
的实例-关于状态栏外观发生的事情完全相同。
问题是:
为什么在iOS 8.3中新提供的控制器不继承状态栏外观?
发生了什么变化(关于此,我无法在iOS 8.2到8.3 API差异中找到任何有意义的参考)?
有没有什么优雅的解决方案,而不是到处都覆盖外观和可见性方法?
最佳答案
试试看:
(viewControllerToBePresented).modalPresentationCapturesStatusBarAppearance = true
关于statusbar - iOS 8.3 modalPresentationStyle OverCurrentContext不会继承状态栏的外观和可见性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29781790/