单视图隐藏/样式中的状态栏

Posted

技术标签:

【中文标题】单视图隐藏/样式中的状态栏【英文标题】:Status bar in single view hide/ style 【发布时间】:2014-02-08 16:11:37 【问题描述】:

在我的应用中,我有多个视图。我需要隐藏一个视图的状态栏(这个 vC2 的顺序是 navigationC -> VC ->push to vC2)。它首先通过设置工作 View controller-based status bar appearance = NO 在 plist 中

然后使用 [UIApplication sharedApplication].statusBarHidden = YES; 在视图中将出现 和[UIApplication sharedApplication].statusBarHidden = NO; in viewWillDisappear 恢复状态栏。

然后,我想在同一个应用程序中为另一个单一视图 (VC3) 设置浅色样式的状态栏。只有一种方法适合我是 通过设置View controller-based status bar appearance = YES 并使用

-(UIStatusBarStyle)preferredStatusBarStyle

    return UIStatusBarStyleLightContent;

在 VC3.m 中 我的问题是在View controller-based status bar appearance 附近,它与 NO 值一起用于隐藏状态栏,并与 YES 值一起用于状态栏的浅色样式

我可以在我的应用中结合隐藏/和样式状态栏吗?

我的目标是ios7

【问题讨论】:

【参考方案1】:

你可以在 viewController 中使用这个函数:

- (BOOL)prefersStatusBarHidden 
    return YES;

plist 布尔值必须为 YES,您可以添加更多内容:

试试

[self setNeedsStatusBarAppearanceUpdate]

如果您将视图控制器作为其他视图控制器的子级,则应由最后一个子级来决定

如果 VC 是另一个 VC 的子级(这在您子类化的第一级 VC 上,如果您使用没有子类化的导航则不需要)

- (UIViewController *)childViewControllerForStatusBarHidden 
     return _myChildViewController;

【讨论】:

我已经试过了,状态栏还在。是否需要在视图或 plist 中添加一些内容? 你对VC有什么特殊配置吗? 不,我想..像什么特殊配置? 通过将 tge plist 设置为 YES,我失去了状态栏的隐藏属性 通过将 Plist 设置为 yes,您必须控制每个 VC 的行为。我发现难以控制的唯一方法是当我有一个 navigationC -> PageViewC -> VC 架构时

以上是关于单视图隐藏/样式中的状态栏的主要内容,如果未能解决你的问题,请参考以下文章

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

隐藏在模态视图中的状态栏(在全屏演示中)

无法在单个 UIViewController 中隐藏状态栏

如果显示视图控制器,状态栏不会隐藏

为啥视图隐藏在状态栏后面?

关闭 Modal ViewController 将父视图隐藏在状态栏后面