请考虑以下设置:


您有一个具有单个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/

10-16 22:44