setStatusBarHidden不起作用

时间:2013-08-18 21:14:38

标签: ios

在我的UIViewController中,我有:

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

然而,观点看起来像这样:

enter image description here

我确定此代码已运行。我从xib加载视图。我没有对状态栏做任何其他事情,比如改变它的风格。可能有什么不对?

即使我设置`application.statusBarHidden = YES"在我的应用代表中,我看到了:

enter image description here

6 个答案:

答案 0 :(得分:62)

在您的应用程序的plist中,如果您将“View controller-based status bar appearance”设置为YES,请将此代码放在您隐藏状态栏的视图控制器中:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

否则,如果“查看基于控制器的状态栏外观”设置为“否”,则只要您想隐藏状态栏,请调用以下内容。

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

答案 1 :(得分:45)

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

第1步:

enter image description here

第2步:

enter image description here

第3步:

添加到您的appDelegate didFinishLaunchingWithOptions函数

application.statusBarHidden = YES;

所以:

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

答案 2 :(得分:12)

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

在您的应用UIViewControllerBasedStatusBarAppearance上设置NOInfo.plist应该有效。

答案 3 :(得分: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;
}

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

- (void)viewDidLoad
{
    [super viewDidLoad];

    //To show the status bar:

    [self showTheStatusBar];

    //Or to hide it:

    [self hideTheStatusBar];
}

答案 4 :(得分:5)

对我而言,它运作良好:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

始终在根视图中。如果您在子视图中执行此操作将无法工作,因为状态栏可见性将从父视图中获取。

答案 5 :(得分:-2)

在隐藏状态栏后尝试添加此项:

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

didFinishLaunchingWithOptions的appdelegate.m中:

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

当我运行你的代码时:

enter image description here