23

在我的UIViewController,我有:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
    [self.view sizeToFit];
}

然而视图看起来像这样:

在此处输入图像描述

我确定这段代码可以运行。我从xib. 我没有对状态栏做任何其他事情,比如改变它的样式。有什么问题?

即使我在我的应用程序委托中设置了“application.statusBarHidden = YES”,我也会看到:

在此处输入图像描述

4

6 回答 6

62

在您的应用程序的 plist 中,如果您将“基于视图控制器的状态栏外观”设置为 YES,请将此代码放在隐藏状态栏的视图控制器中:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

否则,如果“查看基于控制器的状态栏外观”设置为 NO,则在您想要隐藏状态栏时调用以下命令。

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
于 2013-08-20T08:30:28.470 回答
45

如果您想在您的应用程序中隐藏状态栏,请按照以下步骤操作:

第1步 :

在此处输入图像描述

第2步:

在此处输入图像描述

第 3 步:

添加到您的 appDelegate didFinishLaunchingWithOptions 函数

application.statusBarHidden = YES;

所以 :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
      application.statusBarHidden = YES;
}
于 2013-10-06T17:22:54.357 回答
12

那是因为 iOS 7 改变了它处理状态栏的方式。

在您的应用程序上设置UIViewControllerBasedStatusBarAppearance为应该可以工作。NOInfo.plist

于 2013-08-20T02:01:48.863 回答
11

您可以使用以下代码显示/隐藏您的应用程序状态栏(适用于 IOS 7 - IOS 8 和 IOS 9):

在您的项目 .h 文件中添加此布尔值:

BOOL isShowStatus;

并在 .m 文件中添加:

//To show the status bar:
-(void)showTheStatusBar
{
    isShowStatus = YES;
    [self setNeedsStatusBarAppearanceUpdate];
}

//And to hide the status bar:
-(void)hideTheStatusBar
{
    isShowStatus = NO;
    [self setNeedsStatusBarAppearanceUpdate];
}

- (BOOL)prefersStatusBarHidden {
    return !isShowStatus;
}

只需从任何地方调用它,例如 didload:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //To show the status bar:

    [self showTheStatusBar];

    //Or to hide it:

    [self hideTheStatusBar];
}
于 2015-05-27T13:08:11.493 回答
5

对我来说它工作正常:

- (BOOL)prefersStatusBarHidden {
    返回是;
}

始终在根视图中。如果您在子视图中这样做将不起作用,因为状态栏的可见性将从父视图中获取。

于 2014-12-03T10:15:42.773 回答
-2

隐藏状态栏后尝试添加:

 [self.view setFrame:[self.view bounds]];

在您的 appdelegate.m 中didFinishLaunchingWithOptions

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
      application.statusBarHidden = YES;
}

当我运行您的代码时:

在此处输入图像描述

于 2013-08-18T21:22:13.760 回答