状态栏不会消失

use*_*282 111 hidden statusbar ios7 xcode5

我正在创建一个应用程序,我想隐藏状态栏.当我测试应用程序时,状态栏会在显示启动画面时隐藏,但是一旦应用程序完全加载,状态栏就会重新出现.

我正在使用Xcode 5和iOS 7,并尝试以编程方式禁用状态栏

  ([[UIApplication sharedApplication] setStatusBarHidden:YES    
      withAnimation:UIStatusBarAnimationFade];),
Run Code Online (Sandbox Code Playgroud)

在info.plist文件中,并使用.xib文件上的属性检查器.什么都没有效果.

有任何想法吗?

Que*_*tin 220

尝试将以下方法添加到应用程序的根视图控制器:

- (BOOL)prefersStatusBarHidden
{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

  • 另外,如Apple文档中所述,在使用默认值以外的其他值(默认值为NO)调用此方法后,应调用`[self setNeedsStatusBarAppearanceUpdate];`. (16认同)
  • @PsychoDad检查我的答案以获得更全面的解决方案. (3认同)
  • 全球如何做到这一点? (2认同)
  • 完美,谢谢.我只是无法弄清楚为什么iOS 7会这样做而不尊重包含NO状态栏设置的XIB! (2认同)

Ida*_*dan 125

您应该将此值添加到plist:" 查看基于控制器的状态栏外观 "并将其设置为" NO ".

这样您就可以将状态栏设置为隐藏模式.与其他提供的答案不同,这将其设置为全局.

更新:如果您希望在启动屏幕上隐藏状态栏,请不要忘记在目标状态栏选项上标记" 在应用程序启动期间隐藏 ".此外,如果您不想在应用程序内部使用代码,则可以在plist上添加" Status bar is initial hidden "至" YES ".

  • 工作正常,不要忘记将"状态栏最初隐藏"的.plist值设置为YES. (7认同)
  • Apple并不是后向兼容性的真正支持者.让我们一起跳到他们的长笛并更新我们的每一个应用程序.对不起,发泄沮丧.由Apple引起的. (5认同)
  • 花了我很多时间来弄明白这一点.这是一个我认为每个人都会遇到的问题,Apple没有提到它.乐意效劳... (2认同)

Sve*_*ven 73

您发布的代码适用于iOS 6.1及更低版本.对于iOS 7,Apple已经提供了新方法来直接控制每个视图的状态栏.在Info.plist中关闭此选项将使您能够隐藏状态栏,至少对于当前的开发人员预览(4).

添加此项并设置为NO

如需参考,请查看Apple开发人员门户网站上提供的iOS 7过渡指南.

  • 我已经完成了这个,但看起来它刚刚隐藏了状态栏,但是,我的应用程序仍然被状态栏占用的空间"按下",我仍然可以看到电池指示器! (5认同)
  • 在我看来,这个答案更好,因为在我的应用程序中,我只想在横向模式中隐藏状态栏,谢谢! (3认同)
  • 在我看来,这个答案应该是最好的答案 - >这里解释一下https://developer.apple.com/library/prerelease/ios/documentation/UserExperience/Conceptual/TransitionGuide/Bars.html#//apple_ref/doc/UID/TP40013174-CH8-SW1 (2认同)

use*_*ajo 36

well I try hide the status bar in all my app and in the "app"-info.plist and I add two rows in the dictionary "Information Property List" I add "View controller-based status bar appearance" set NO and in "Status bar is initially hidden"set YES and for me works n_n'

plist信息

  • 这会强制您的应用程序进入兼容模式,该模式专门用于在开发人员没有时间修复应用程序以执行新方法时,使旧应用程序按预期在iOS 7上运行.相反,您需要在视图控制器中实现prefer*方法. (2认同)

alo*_*nes 17

但是,如果使用UIImagePicker,状态栏将再次出现.

在这种情况下,您应该隐藏状态栏,如下所示,

- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {

// for iOS7
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
Run Code Online (Sandbox Code Playgroud)

  • 我有同样的问题.在我使用UIImagePicker之前,状态栏是隐藏的.我尝试了你的解决方案,它不适合我.我是否需要在帖子中添加除代码之外的任何内容? (2认同)

iku*_*dia 8

经过一番长时间的搜索,我终于找到了一个非常简单的解决方案,它也解决了这个UIImagePickerController问题.

如其他答案中所述,将状态栏隐藏在AppDelegate didFinishLaunching中,并将"基于控制器的状态栏外观视图"设置为NO.

然后,在你的AppDelegate中:

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
      [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
Run Code Online (Sandbox Code Playgroud)

et voila - 即使UIImagePickerController最重要,您的状态栏也将保持隐藏状态.

每次呈现UIImagePickerController时,这比"重新隐藏"更好,因为它在整个应用程序中都是隐藏的.

  • 虽然iOS上的iOS7中至少还有一些东西仍然存在 - UIImagePickerController仍然会在第二次显示时弹出一个状态栏...... Hurrrr ...... :-(目前我正在使用appDelegate并在每个viewWillAppear中再次隐藏它所以即使它看起来很脏,但它会很快再次修复. (2认同)

Mik*_*ill 7

要隐藏特定UIViewController上的状态栏,只需添加以下内容:

-(BOOL)prefersStatusBarHidden
{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 !


soh*_*dyn 5

您可以隐藏项目摘要.在启动期间隐藏了一个复选框.

查看快照

在此输入图像描述