我继承UIImagePickerController
在试图重写其默认状态栏行为,并有不同的结果。 我的应用程序使用视图控制器为基础的状态栏的外观。
没有子,我发现,它改变了状态栏的风格Default
(暗)时,选择器被驳回,并没有什么我已经在我的初始视图控制器还没试过被修复它。 此外,当拾取器隐藏而被呈现状态栏,向上滑动,在初始视图控制器的导航栏与它向上滑动从高度64至44。
所以,我希望我UIImagePickerController
子类,以保持状态栏风格LightContent
,并企图变通的滑动导航条,继续显示在介绍该选择器,然后把它隐藏状态栏viewDidAppear:
第一个有趣的事情是, preferredStatusBarStyle
和prefersStatusBarHidden
在我的选择器子类都没有被调用,直到我也推翻childViewControllerForStatusBarStyle
和childViewControllerForStatusBarHidden
返回零。 这似乎表明,通常情况下,一个UIImagePickerController
压倒一切的,可能返回一个内部子视图控制器。 看着在视图层次viewDidAppear:
有肯定是一个孩子PLImagePickerCameraView
及其可能还有一个控制器去用它。 可悲的是,我们不能忽略这个控制器。
重写那些childViewControllerFor...
方法, preferredStatusBarStyle
和prefersStatusBarHidden
确实会叫之间viewWillAppear:
和viewDidAppear:
并且确实能够保持状态栏可见和LightContent
。 第二个有趣的事情虽然是在之前presentViewController
动画状态栏短暂闪烁暗。 额外的呼叫没有量setNeedsStatusBarAppearanceUpdate
在viewWillAppear:
或其他地方,如viewDidLoad:
似乎阻止。
第三个有趣的是,酒吧的风格还是会被解雇时设置为暗,并没有多余的调用setNeedsStatusBarAppearanceUpdate
在选择器的viewWillDisappear:
或viewDidDisappear:
似乎阻止。
TL;博士 -我发现,覆盖UIImagePickerController
隐藏与显示需求状态栏工作得很好,但设置栏样式是有问题的。 东西在选择器类或UINavigationController
本身是自动宁愿Default
栏样式,而当其切换到上解雇,似乎很难将其切换回。
我已经看到了问题的UIImagePickerController打破了状态栏的外观 ,并没有什么我见过有帮助着呢,iOS8.1不能解决问题。 我确信,设置选择器的navigationBar.barStyle
黑将做到这一点,但没有骰子。 任何想法任何人?
(另外,上防止任何提示UINavigationController
的导航栏从滑动高达44高度的时候,状态栏是隐藏将是有用的THX)