尝试将以下方法添加到应用的根视图控制器:
- (BOOL)prefersStatusBarHidden
{
return YES;
}
您应该将此值添加到 plist:“查看基于控制器的状态栏外观”并将其设置为“否”。
这将使您能够将状态栏设置为隐藏模式。与其他提供的答案不同,这将其设置为全局。
更新:如果您希望状态栏在初始屏幕上隐藏,请不要忘记在目标状态栏选项上标记“在应用程序启动期间隐藏”。此外,如果您不想使用应用程序内的代码执行此操作,可以在 plist 上将“状态栏最初隐藏”添加到“是”。
您发布的代码适用于 iOS 6.1 及更低版本。对于 iOS 7,Apple 提供了直接控制每个视图的状态栏的新方法。在 Info.plist 中关闭此选项将使您能够隐藏状态栏,至少对于当前的 Developer Preview (4)。
https://i.stack.imgur.com/wXDWn.png
作为参考,请查看 Apple 开发者门户上提供的 iOS 7 转换指南。
好吧,我尝试在我的所有应用程序和“app”-info.plist 中隐藏状态栏,并在字典“信息属性列表”中添加两行,添加“基于视图控制器的状态栏外观”设置 NO 并在“状态栏最初是隐藏的“设置是,对我来说工作 n_n'
https://i.stack.imgur.com/EGZTv.png
但是,如果您使用 UIImagePicker,状态栏会再次出现。
在这种情况下,您应该隐藏状态栏,如下所示,
- (void)imagePickerController:(UIImagePickerController *)aPicker didFinishPickingMediaWithInfo:(NSDictionary *)info {
// for iOS7
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
setNeedsStatusBarAppearanceUpdate
吗?
经过长时间的搜索,我终于找到了一个非常简单的解决方案,它也解决了 UIImagePickerController
问题。
如其他答案中所述,将您的状态栏设置为隐藏在您的 AppDelegate didFinishLaunching 中,并将“基于查看控制器的状态栏外观”设置为 NO。
然后,在您的 AppDelegate 中:
- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
[application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
et voila - 即使 UIImagePickerController 最重要,您的状态栏也将保持隐藏状态。
这比每次呈现 UIImagePickerController 时都“重新隐藏”它要好,因为它在整个应用程序中保持隐藏状态。
要隐藏特定 UIViewController 上的状态栏,只需添加以下内容:
-(BOOL)prefersStatusBarHidden
{
return YES;
}
希望这可以帮助 !
您可以从项目摘要中隐藏。启动期间有一个复选框隐藏。
查看快照
https://i.stack.imgur.com/PKffd.png
我为我找到了这个解决方案。它就像一个魅力。将此代码写在您想要使用 UIImagePickerController 的视图控制器上。
- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
除了上面单独的答案之外,请确保实现 imagePickerControllerDidCancel 方法并在那里添加相同的代码。
我也遇到了 UIImagePicker 的问题。与 Alones 的回答类似,我的解决方案如下。我添加了这一行或代码:
[[UIApplication sharedApplication] setStatusBarHidden:YES];
到这个功能:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
我还没有在 iOS 6 或更早版本上测试过,但它在 iOS 7 中运行良好。
迅捷解决方案
只需将其添加到您的视图控制器:
override func prefersStatusBarHidden() -> Bool {
return true
}
我正在使用 Xcode 6,此解决方案适用于我的 iOS 7 和 8:
首先,在 plist 文件中将“基于控制器的状态栏外观”设置为 NO。
其次,在 AppDelegate 中,添加以下内容:
- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame
{
[application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
我的问题是我使用了视图控制器包含。只有最顶层的视图控制器,例如嵌入到导航控制器中,才能隐藏或显示状态栏。
[self setNeedsStatusBarAppearanceUpdate];
。