如何使用objective-C隐藏ios 9中特定viewcontroller的状态栏

时间:2016-01-18 06:39:51

标签: ios objective-c statusbar

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

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

然后我尝试了我的viewcontroller

- (BOOL) prefersStatusBarHidden{
    return YES;
}

这也没有用。任何人都可以帮助我。对你说 我不想在这里使用任何弃用的方法

5 个答案:

答案 0 :(得分:1)

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

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

并在您想要的地方调用此方法,例如来自viewDidLoad

[self prefersStatusBarHidden];

答案 1 :(得分:1)

在视图控制器中尝试以下代码 请尝试以下方法,不要使用压缩警告:

- (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;
}

答案 2 :(得分:1)

  

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

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

答案 3 :(得分:-1)

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];
}

答案 4 :(得分:-1)

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

 - (BOOL)prefersStatusBarHidden {

   return NO;
}

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

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