在iOS8上,以横向模式显示我的应用程序将隐藏状态栏,但在iOS 7上,状态栏将显示在两个方向上

我想要在iOS 8中以两种方向显示状态栏; 它在iOS 7中正常显示。

navigationController.isNavigationBarHidden返回NO。

为什么iOS 8这样做?

尝试这个

didRotateFromInterfaceOrientation添加以下代码

 [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; 

编辑
无需在所有视图控制器中写入代码
plist中将View controller-based status bar appearanceNO ,并在根视图控制器的viewDidLoad添加以下代码

 [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; 

演示项目
https://www.dropbox.com/s/uumneidk4wom5md/demoStatusBar.zip?dl=0

要在ios 8中以横向模式显示状态栏,请尝试以下方法

 - (BOOL)prefersStatusBarHidden { return NO; } 

Swift版本

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

Swift 3,Xcode 8,iOS 10,/ * ViewController.swift * /

 override var prefersStatusBarHidden: Bool { return false } 

Jageen的解决scheme可能是最好的,只是一个小的改变,即不使用viewDidLoad ,最好使用application:didFinishLaunchingWithOptions:

基本上是两个步骤:

1)。 在项目的Info.plist文件中将“基于视图控制器的状态栏外观”设置为NO。

2)。 强制状态栏隐藏状态为NO,在application:didFinishLaunchingWithOptions: ,使用以下代码:

 [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; 

而且,瞧!

注意:使用上面的setStatusBarHidden:withAnimation语句来强制状态栏隐藏状态是很重要的。

我遇到过同样的问题! 通过将其添加到viewDidLoad来修复

  [self setNeedsStatusBarAppearanceUpdate]; 

而这本身就是执行

 -(BOOL)prefersStatusBarHidden{ return NO; } 

他们通过给我们更多的工作让我们有工作。

要么…

他们做了其他改变,导致比特占用比以前更多的空间。 随着iOS 7和“顶部布局栏指南”的出现,在向下轻扫屏幕中状态栏的方便可用性,回收状态栏空间以供其他小提示,许多人预测状态栏可能是逐渐成为UI的标准部分。

关于新的设备尺寸,也有相当多的嗡嗡声,因为它们在iOS 8中所做的更改试图使它更容易编码一堆不同的尺寸。

这是纯粹的猜测,但我不认为他们的景观状态栏会在iOS 8中返回。

这不是问题,而是iOS 8的一个function。在iOS 8中,状态栏将隐藏在横向模式下,即使苹果的应用程序也具有相同的行为。

Swift 3

 override func viewDidLoad() { super.viewDidLoad() UIApplication.shared.setStatusBarHidden(true, with: .none) UIApplication.shared.setStatusBarHidden(false, with: .none) /// } 

并在Info.plist里面添加这个:

UIViewControllerBasedStatusBarAppearance布尔值NO

Swift 3 (截至2017年6月2日)

 override func viewWillAppear(_ animated: Bool) { super.viewWillAppear() self.setNeedsStatusBarAppearanceUpdate() } override var prefersStatusBarHidden : Bool { return false } 

我们按照上面的步骤修复它,并确保左右两个横向都启用。

在项目/目标/部署信息下

在这里输入图像说明

我们通过强制用户看不见的方向改变来解决这个问题。 在加载的第一个视图控制器中,添加:

 - (void)viewWillAppear:(BOOL)animated { NSNumber *orientationLeft = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft]; NSNumber *orientationRight = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight]; [[UIDevice currentDevice] setValue:orientationLeft forKey:@"orientation"]; [[UIDevice currentDevice] setValue:orientationRight forKey:@"orientation"]; }