状态栏不会消失

我正在创build一个应用程序,我想隐藏状态栏。 当我testing应用程序时,状态栏在启动屏幕显示时被隐藏,但是一旦应用程序被完全加载,状态栏会再次出现。

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

([[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];), 

在info.plist文件中,并使用.xib文件上的属性检查器。 没有什么似乎工作。

有任何想法吗?

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

 - (BOOL)prefersStatusBarHidden { return YES; } 

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

这将使您能够将状态栏设置为隐藏模式 。 这与其他所提供的答案不同。

更新:如果你想在启animation面上隐藏状态栏,不要忘记在目标状态栏选项上标记“ 在应用程序启动时隐藏 ”。 此外,如果您不想使用应用程序中的代码执行操作,则可以将plist上的“ 状态栏最初隐藏 ”添加到“ YES ”。

您发布的代码适用于iOS 6.1及更低版本。 对于iOS 7,Apple已经提供了新的方法来直接控制每个视图的状态栏。 closuresInfo.plist中的这个选项可以隐藏状态栏,至less对于当前的开发人员预览(4)来说。

添加并设置为NO

有关参考资料,请参阅Apple开发人员门户上提供的iOS 7转换指南。

以及我尝试隐藏所有我的应用程序中的状态栏,并在“应用程序”-info.plist,我在字典“信息属性列表”中添加两行我添加“查看基于控制器的状态栏外观”设置NO和在“状态栏最初隐藏“设置是,对我来说工作n_n”

plist信息

但是,如果使用UIImagePicker,状态栏会再次出现。

在这种情况下,你应该隐藏状态栏如下,

 - (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info { // for iOS7 if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) { [[UIApplication sharedApplication] setStatusBarHidden:YES]; } 

经过一番漫长的search之后,我终于find了一个非常简单的解决scheme,它也负责处理UIImagePickerController问题。

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

然后,在你的AppDelegate中:

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

等瞧 – 即使当UIImagePickerController是最重要的,你的状态栏将保持隐藏。

这比每次展示UIImagePickerController时都“重新隐藏”要好,因为它在整个应用程序中保持隐藏状态。

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

 -(BOOL)prefersStatusBarHidden { return YES; } 

希望这可以帮助 !

您可以隐藏项目摘要。 发射时隐藏一个checkbox。

查看快照

在这里输入图像描述

我为我find了这个解决scheme。 它像一个魅力。 把这个代码写在你想使用UIImagePickerController的viewcontroller上。

 - (void)viewWillDisappear:(BOOL)animated { [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; } - (void)viewWillAppear:(BOOL)animated { [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; } 

除了上面的单独的答案,请确保实现imagePickerControllerDidCancel方法,并添加相同的代码。

我也遇到了UIImagePicker的问题。 与Alone类似,我的解决scheme如下。 我添加了这一行或代码:

 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 

到这个function:

 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 

我没有testing过这个与iOS 6或更旧,但它在iOS 7中效果很好。

Swift解决scheme

只需将其添加到您的视图控制器:

 override func prefersStatusBarHidden() -> Bool { return true } 

我使用Xcode 6,这个解决scheme适用于iOS 7和8:

首先,在plist文件中将“基于视图控制器的状态栏外观”设置为NO。

其次,在AppDelegate中添加这个:

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

我的问题是,我用视图控制器遏制。 只有最上面的视图控制器,例如embedded到导航控制器中,可以隐藏或显示状态栏。