状态栏不会消失
我正在创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)来说。
有关参考资料,请参阅Apple开发人员门户上提供的iOS 7转换指南。
以及我尝试隐藏所有我的应用程序中的状态栏,并在“应用程序”-info.plist,我在字典“信息属性列表”中添加两行我添加“查看基于控制器的状态栏外观”设置NO和在“状态栏最初隐藏“设置是,对我来说工作n_n”
但是,如果使用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到导航控制器中,可以隐藏或显示状态栏。