UIImagePickerController与状态栏iOS8
我UIImagePickerController
尝试覆盖其默认状态栏的行为和混合结果。 我的应用程序使用基于视图控制器的状态栏外观。
没有子类,我发现当select器被解散时,它将状态栏样式更改为Default
(黑暗),并且我在初始视图控制器中没有尝试过任何东西。 另外,当select器隐藏状态栏时,向上滑动,初始视图控制器的导航条从高度64上滑动到44。
因此,我希望我的UIImagePickerController
子类保持状态栏的风格为LightContent
并尝试解决滑动导航栏时,保持显示状态栏呈现select器,然后将其隐藏在viewDidAppear:
第一个有趣的事情是,我的prefersStatusBarHidden
子类中的preferredStatusBarStyle
和prefersStatusBarHidden
根本没有被调用,直到我也覆盖了childViewControllerForStatusBarStyle
和childViewControllerForStatusBarHidden
返回nil。 这似乎表明,通常, UIImagePickerController
重写这些,可能会返回一个内部子视图控制器。 查看viewDidAppear:
中的视图层次结构,当然有一个孩子PLImagePickerCameraView
,它可能有一个控制器去与它。 可悲的是,我们不能覆盖这个控制器。
覆盖那些childViewControllerFor...
方法, preferredStatusBarStyle
和prefersStatusBarHidden
在viewWillAppear:
和viewDidAppear:
之间调用,确实可以保持状态栏可见和LightContent
。 然而, 第二件有趣的事情是,在presentViewController
animation之前,状态栏会短暂地眨眼睛。 在viewWillAppear:
或者像viewDidLoad:
这样的其他地方,没有额外的setNeedsStatusBarAppearanceUpdate
额外的调用viewDidLoad:
似乎阻止了这一点。
第三件有趣的事情是,在解雇期间,酒吧风格仍然被设置为黑暗,在select器的viewWillDisappear:
没有额外的setNeedsStatusBarAppearanceUpdate
调用viewWillDisappear:
或者viewDidDisappear:
似乎阻止了这一点。
tl; dr – 我发现覆盖UIImagePickerController
来隐藏和显示状态栏按需工作很好,但设置栏样式是有问题的。 select器类或UINavigationController
本身中的某些内容自动更喜欢Default
栏样式,当它切换到解除时,似乎很难将其切换回去。
我看到了问题UIImagePickerController打破了状态栏的外观 ,没有看到有什么帮助,而且iOS8.1不能解决它。 我确定把picker的navigationBar.barStyle
设置为黑色就可以了,但是没有骰子。 任何想法任何人?
(另外,当隐藏状态栏时,防止UINavigationController
的导航栏滑动到44的高度的任何提示将是有用的thx)