无法在iOS7中隐藏状态栏
我刚升级我的iPhone 5 iOS 7到四个测试版本。 现在,当我在iPhone上运行Xcode 5的应用程序时,状态栏不会隐藏,即使它应该。
不工作:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; 不工作:
 [UIApplication sharedApplication].statusBarHidden = YES; 
无法登录到Apple开发者论坛
在您的应用程序plist文件中添加一行称为“查看基于控制器的状态栏外观”并将其设置为NO
请注意,如果您在应用程序中使用UIImagePickerController,则无法正常工作。

在视图控制器中添加方法。
 - (BOOL)prefersStatusBarHidden { return YES; } 
在Plist中添加以下属性。
  – > Status bar is initially hidden =是 
  – > View controller-based status bar appearance = NO 
同时添加 – 现在状态栏将消失。
要在单个视图上隐藏状态栏,您应该使用:
 [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
起初,这对我不起作用,然后在这个方法的文档中看到://如果你的应用程序使用默认的基于UIViewController的状态栏系统,那么设置statusBarHidden什么也不做。
 这必须在plist文件上完成,将View controller-based status bar appearance的关键View controller-based status bar appearance设置为NO 。 然后它的工作。 
要在iOS7中隐藏状态栏,您需要2行代码
- 
inApplication: (UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionswrite[application setStatusBarHidden:YES];
- 
在info.plist中添加这个 View-Controller Based Status Bar Appearance = NO
为了使用传统的UIApplication方法隐藏/显示状态栏,您的应用程序必须为iOS 7设置一个plist值:
 View-Controller Based Status Bar Appearance = NO 
 该值默认设置为YES。 如果将其更改为NO,则可以使用传统方法。 如果将其设置为YES,则仍然可以隐藏状态栏,但取决于应用中的每个视图控制器子类,以覆盖: prefersStatusBarHidden以返回YES。 
任何时候你的应用程序需要状态栏外观或可视性改变,并且基于视图控制器的状态栏外观设置为YES,你最外面的视图控制器需要调用:
 setNeedsStatusBarAppearanceUpdateAnimation 
有这么多的组合提出这个问题,但问题是,iOS 6和7使用不同的方法来隐藏状态栏。 我从来没有成功设置plist设置来启用iOS 7上的iOS6风格行为,但是如果您构建的应用程序支持iOS 6+,则需要一次使用3个方法来确保特定的视图控制器隐藏状态酒吧:
 // for ios 7 - (BOOL)prefersStatusBarHidden{ return YES; } // for ios 6 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[UIApplication sharedApplication] setStatusBarHidden:YES]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; // explicitly set the bar to show or it will remain hidden for other view controllers [[UIApplication sharedApplication] setStatusBarHidden:NO]; } 
这应该工作,不管你的plist设置。
我不得不做两个更改以隐藏状态栏:
将此代码添加到您想要隐藏状态栏的视图控制器中:
 - (BOOL)prefersStatusBarHidden { return YES; } 
将其添加到.plist文件中(转到应用程序设置中的“信息”)
 View controller-based status bar appearance --- NO 
然后你可以调用这一行来隐藏状态栏:
 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
只需在info.plist文件中添加这两行。 它将修复iOS7和更旧的版本。
- 状态栏最初隐藏=是
- 查看基于控制器的状态栏外观=否
导航到项目并选择目标 – >常规,并查看“状态栏风格…应用程序启动期间隐藏”复选框将被选中。 这将工作。
试试这个简单的方法:
 - (void)viewWillAppear:(BOOL)animated { [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; } - (void)viewWillDisappear:(BOOL)animated { [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; } 
唯一能为我工作的就是在你的plist中加入以下内容
 <key>UIStatusBarHidden</key> <true/> <key>UIViewControllerBasedStatusBarAppearance</key> <false/> 
 我发现在整个应用程序中隐藏状态栏的最简单方法是在UIViewController上创建一个category ,并覆盖prefersStatusBarHidden 。 这样你就不必在每个视图控制器中编写这个方法。 
的UIViewController + HideStatusBar.h
 #import <UIKit/UIKit.h> @interface UIViewController (HideStatusBar) @end 
的UIViewController + HideStatusBar.m
 #import "UIViewController+HideStatusBar.h" @implementation UIViewController (HideStatusBar) //Pragma Marks suppress compiler warning in LLVM. //Technically, you shouldn't override methods by using a category, //but I feel that in this case it won't hurt so long as you truly //want every view controller to hide the status bar. //Other opinions on this are definitely welcome #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation" - (BOOL)prefersStatusBarHidden { return YES; } #pragma clang diagnostic pop @end 
 -(BOOL)prefersStatusBarHidden { return YES; } 
- 
在plist添加—- 查看基于控制器的状态栏外观— NO 
- 
在每个viewController中写入 - (void) viewDidLayoutSubviews { CGRect viewBounds = self.view.bounds; CGFloat topBarOffset = 20.0; viewBounds.origin.y = -topBarOffset; self.view.bounds = viewBounds; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style }
对于iOS 7中的状态栏问题,目标应该是5.1和以上的应用程序
步骤隐藏iOS 7中的状态栏:
1.转到您的应用程序info.plist文件。
2.设置,查看基于控制器的状态栏外观:Boolean NO
希望我解决了状态栏问题…..
对于iOS 7,在单个视图中使用viewWillappear方法:
 [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO]; 
用于显示状态栏使用:
 [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO]; 
在信息Plist文件中为以下属性添加一行
属性名称:基于视图控制器的状态栏外观
价值:NO
在这个线程上的许多答案的工作,但这是我的理解,如果你想要做任何动态的事情,你最终需要调用:
 [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)]; 
尝试将以下方法添加到您的应用的根视图控制器:
 - (BOOL)prefersStatusBarHidden { return YES; } 
 我尝试了所有这些选项张贴在我的项目上,他们不会工作。 我认为这可能是因为我已经更新了我的Xcode ,然后到iOS 7的应用程序的事实,有些设置已经搞乱了。 我决定为它建立一个全新的项目,并简单地设置后:“ Status bar is initially hidden = YES ”和“ View controller-based status bar appearance = NO ”,正如其他许多人所说,它正常工作(即没有状态栏)。 
所以我的建议,如果你正在从一个旧版本更新到iOS 7的项目,并尝试所有其他选项是建立一个新的项目。
你可以检查这个代码 ,pod UIViewController + ODStatusBar
对于Swift 2.0+ IOS 9
 override func prefersStatusBarHidden() -> Bool { return true } 
隐藏特定viewController的状态栏
 - (BOOL)prefersStatusBarHidden { return YES; } 
用于设置应用程序的隐藏状态栏:
- 
在.plist和 application: didFinishLaunchingWithOptions:[application setStatusBarHidden:YES];View controller-based status bar appearance为NOapplication: didFinishLaunchingWithOptions:set:[application setStatusBarHidden:YES];注意:setStatusBarHidden:已弃用 
要么
- 
在项目设置 – >常规选项卡 – >部署信息 选中 Hide Status bar框。
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { application.statusBarHidden = YES; return YES; } 
 我不知道为什么你“无法登录到苹果开发者论坛”,但(不违反NDA),你也可以通过Xcode隐藏你的statusBar。 这是您的应用程序目标的一般设置。 
- IOS 7导航栏文本和箭头颜色
- iOS 7 UISearchDisplayControllersearch栏search时重叠状态栏
- '缺less推荐的图标文件 – 该捆绑包中没有包含完全为'120×120'像素的iPhone / iPod Touch的应用图标,格式为'
- 如何停止对标题更改不需要的UIButtonanimation?
- 使用UIImage的UIBarButtonItem始终着色iOS 7
- 当调用reloadRowsAtIndexPaths时,UITableView弹回到一节的顶部
- UICollectionView声明错误陈旧的数据
- 在Xcode 5没有回合button?
- 为什么UIViewController在UINavigationBar下扩展,而UITableViewController没有?