VS的UIImagePickerController状态栏iOS8上(UIImagePickerCo

2019-10-21 11:43发布

我继承UIImagePickerController在试图重写其默认状态栏行为,并有不同的结果。 我的应用程序使用视图控制器为基础的状态栏的外观。


没有子,我发现,它改变了状态栏的风格Default (暗)时,选择器被驳回,并没有什么我已经在我的初始视图控制器还没试过被修复它。 此外,当拾取器隐藏而被呈现状态栏,向上滑动,在初始视图控制器的导航栏与它向上滑动从高度64至44。

所以,我希望我UIImagePickerController子类,以保持状态栏风格LightContent ,并企图变通的滑动导航条,继续显示在介绍该选择器,然后把它隐藏状态栏viewDidAppear:

第一个有趣的事情是, preferredStatusBarStyleprefersStatusBarHidden在我的选择器子类都没有被调用,直到我也推翻childViewControllerForStatusBarStylechildViewControllerForStatusBarHidden返回零。 这似乎表明,通常情况下,一个UIImagePickerController压倒一切的,可能返回一个内部子视图控制器。 看着在视图层次viewDidAppear:有肯定是一个孩子PLImagePickerCameraView及其可能还有一个控制器去用它。 可悲的是,我们不能忽略这个控制器。

重写那些childViewControllerFor...方法, preferredStatusBarStyleprefersStatusBarHidden确实会叫之间viewWillAppear:viewDidAppear:并且确实能够保持状态栏可见和LightContent第二个有趣事情虽然是在之前presentViewController动画状态栏短暂闪烁暗。 额外的呼叫没有量setNeedsStatusBarAppearanceUpdateviewWillAppear:或其他地方,如viewDidLoad:似乎阻止。

第三个有趣的是,酒吧的风格还是会被解雇时设置为暗,并没有多余的调用setNeedsStatusBarAppearanceUpdate在选择器的viewWillDisappear:viewDidDisappear:似乎阻止。


TL;博士 -我发现,覆盖UIImagePickerController隐藏与显示需求状态栏工作得很好,但设置栏样式是有问题的。 东西在选择器类或UINavigationController本身是自动宁愿Default栏样式,而当其切换到上解雇,似乎很难将其切换回。

我已经看到了问题的UIImagePickerController打破了状态栏的外观 ,并没有什么我见过有帮助着呢,iOS8.1不能解决问题。 我确信,设置选择器的navigationBar.barStyle黑将做到这一点,但没有骰子。 任何想法任何人?

(另外,上防止任何提示UINavigationController的导航栏从滑动高达44高度的时候,状态栏是隐藏将是有用的THX)

文章来源: UIImagePickerController vs status bar iOS8