在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 appearance
为NO
,并在根视图控制器的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"]; }