如何使用objective-C在ios 9中隐藏特定视图控制器的状态栏

Posted

技术标签:

【中文标题】如何使用objective-C在ios 9中隐藏特定视图控制器的状态栏【英文标题】:How to hide status bar for specific viewcontroller in ios 9, using objective-C 【发布时间】:2016-04-23 06:19:20 【问题描述】:

我想隐藏特定视图控制器的状态栏,而不是全部。 然后我尝试了这个,

[[UIApplication sharedApplication] setStatusBarHidden:YES]; in the `.AppDelegate.m` inside the `didfinishlaunchwithoption`  but it didn't work. and also it is deprecated.

然后我在我的视图控制器中尝试了

- (BOOL) prefersStatusBarHidden
    return YES;

这也没有用。任何人都可以帮我解决这个问题。thnak 你 我不想在这里使用任何已弃用的方法

【问题讨论】:

Hide the status bar in ios 9的可能重复 你的问题解决了吗? 不,兄弟@DianaProdan 没有为我工作,尝试了所有。你有什么想法吗? 我从 .plist 'View controller-based status bar appearance 字段中删除,并在需要隐藏状态栏的控制器中添加 - (BOOL) prefersStatusBarHidden return YES; 。成功了 【参考方案1】:

转到 info.plist 并添加两个属性(如果不存在)。将“状态栏最初隐藏”设置为“YES”并将“UIViewControllerBasedStatusBarAppearance”设置为“YES”。这将隐藏您应用的状态栏。

-(BOOL)prefersStatusBarHidden

    return YES;

并在你想要的地方调用这个方法,例如从 viewDidLoad

[self prefersStatusBarHidden];

【讨论】:

这适用于隐藏状态栏。但在特定视图控制器中显示状态栏不起作用。无论如何,谢谢 @Graham 检查已编辑的答案,这对我来说是完美的,只需将“UIViewControllerBasedStatusBarAppearance”更改为“YES”,其他的也一样。【参考方案2】:

我想隐藏特定视图控制器的状态栏,而不是全部。

只有 *** 视图控制器才能说明状态栏是​​否隐藏。您的prefersStatusBarHidden 没有被咨询,因为您的视图控制器不是***视图控制器——它有某种负责状态栏的父视图控制器。

【讨论】:

【参考方案3】:

在您的视图控制器中尝试以下代码。 在没有贬损警告的情况下尝试以下方法:

- (void)viewWillAppear:(BOOL)animated
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];



- (void)viewWillDisappear:(BOOL)animated
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
    [super viewWillDisappear:animated];

iOS 9 更新 在 viewController 中添加以下代码来隐藏状态栏。

- (BOOL) prefersStatusBarHidden 
    return YES;

【讨论】:

setStatusBarHidden(_:withAnimation:) 在 iOS 9 中已弃用。【参考方案4】:
Try below code in your view controller.

- (void)viewWillAppear:(BOOL)animated
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];



- (void)viewWillDisappear:(BOOL)animated
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
    [super viewWillDisappear:animated];

【讨论】:

[[UIApplication sharedApplication] setStatusBarHidden:YES]此方法已弃用。【参考方案5】:

将以下代码添加到您的视图控制器..

 - (BOOL)prefersStatusBarHidden 

   return NO;

如果更改此方法的返回值,请调用 setNeedsStatusBarAppearanceUpdate 方法。

对于 childViewController,要指定子视图控制器应控制首选状态栏隐藏/取消隐藏状态,请实现 childViewControllerForStatusBarHidden 方法。

【讨论】:

prefersStatusBarHidden 没有被调用 prefersStatusBarHidden方法中返回命令后无法调用setNeedsStatusBarAppearanceUpdate

以上是关于如何使用objective-C在ios 9中隐藏特定视图控制器的状态栏的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中为 Web 编写特定于平台的代码?

我如何在 iOS 9 中隐藏顶部键盘栏

ios - 通过代码Objective-c隐藏按钮时出错

Objective-C:如何在课堂外隐藏课堂成员?

Objective-C 对象(内容根据iOS编程编写)

iOS 9 SDK Objective-C 的 WebSockets 客户端