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

Tim*_*win 41 objective-c orientation ios ios8

我希望状态栏在iOS 8中以两个方向显示; 它在iOS 7中正确显示.

navigationController.isNavigationBarHidden 返回NO.

为什么iOS 8会这样做?

Jag*_*een 60

试试这个

在下面添加代码 didRotateFromInterfaceOrientation

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
Run Code Online (Sandbox Code Playgroud)

编辑
无需编写代码,在所有视图控制器
设置View controller-based status bar appearance,以NOplist和根视图控制器添加下面的代码viewDidLoad

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
Run Code Online (Sandbox Code Playgroud)

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

  • 这似乎是最好的解决方案,只有一个小的建议更改,即使用`application:FinishLaunchingWithOptions:`来强制状态栏隐藏状态. (4认同)
  • 自 iOS 9 起已弃用。 (2认同)

Vid*_*dhi 49

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

- (BOOL)prefersStatusBarHidden {
    return NO;
}
Run Code Online (Sandbox Code Playgroud)

Swift版本

override func prefersStatusBarHidden() -> Bool {
    return false
}
Run Code Online (Sandbox Code Playgroud)

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

override var prefersStatusBarHidden: Bool {
        return false
    }
Run Code Online (Sandbox Code Playgroud)


Mus*_*afa 9

Jageen的解决方案可能是最好的,只需要一个小的改动,即使用viewDidLoad它,而不是使用它application:didFinishLaunchingWithOptions:.

这基本上是一个两步过程:

1).在项目的Info.plist文件中将"查看基于控制器的状态栏外观"设置为NO.

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

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
Run Code Online (Sandbox Code Playgroud)

瞧,瞧!

注意:使用setStatusBarHidden:withAnimation上述两个语句很重要,强制状态栏隐藏状态.

  • 注意:您不需要在`application:didFinishLaunchingWithOptions:`中调用`[UIApplication sharedApplication]`,因为有一个方法参数`application`.因此,只需调用`[application setStatusBarHidden:...]`. (3认同)

ser*_*_ov 5

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

  [self setNeedsStatusBarAppearanceUpdate];
Run Code Online (Sandbox Code Playgroud)

而这要实现自己

-(BOOL)prefersStatusBarHidden{
    return NO;
}
Run Code Online (Sandbox Code Playgroud)


Gan*_*uri 5

这不是问题,而是iOS 8的一个功能.状态栏将在iOS 8中以横向模式隐藏,甚至Apple的应用程序也具有相同的行为.