当“查看基于控制器的状态栏外观”=YES 时隐藏 ios 状态栏

Posted

技术标签:

【中文标题】当“查看基于控制器的状态栏外观”=YES 时隐藏 ios 状态栏【英文标题】:Hide ios status bar when "View controller-based status bar appearance"=YES 【发布时间】:2016-11-02 23:17:22 【问题描述】:

我需要根据视图控制器更改状态栏样式,因此在我的 plist 文件中“基于视图控制器的状态栏外观”设置为 YES

而且我有时需要隐藏状态栏!

我正在尝试使用 setStatusBarHidden,但它似乎只有在“查看基于控制器的状态栏外观”设置为 NO 时才有效> ...

那么有没有办法隐藏状态栏呢?

【问题讨论】:

覆盖视图控制器中的prefersStatusBarHidden 方法 设置 prefersStatusBarHidden 仅在基于视图控制器的状态栏外观设置为 YES 时才有效 【参考方案1】:

首先,声明一个变量来表示是否隐藏:

@interface ExampleViewController

    BOOL statusBarHidden;

第二,重写依赖变量的UIViewController方法:

- (BOOL)prefersStatusBarHidden 
    return statusBarHidden;

最后,当您需要隐藏状态栏时,请执行以下操作:

statusBarHidden = YES;
[self setNeedsStatusBarAppearanceUpdate];

当您需要再次显示状态栏时,请执行以下操作:

statusBarHidden = NO;
[self setNeedsStatusBarAppearanceUpdate];

【讨论】:

以上是关于当“查看基于控制器的状态栏外观”=YES 时隐藏 ios 状态栏的主要内容,如果未能解决你的问题,请参考以下文章

UIImagePickerController 打破状态栏的外观

在 XCode 8.2 / Swift 3.0 中更改状态栏样式(没有“查看基于控制器的状态栏外观”)

UIImagePickerController 隐藏状态栏 iOS 8

cocos2d-x斜线时隐藏状态栏

iOS7如何隐藏状态栏?

删除导航栏上的空间