【问题标题】:Xcode 6.x/iOS 8 Hides Status Bar in Landscape OrientationXcode 6.x/iOS 8 横向隐藏状态栏
【发布时间】:2014-10-21 12:50:12
【问题描述】:

使用 Xcode 6.x 构建的应用程序会在横向 (iPhone) 中自动隐藏状态栏。使用 Xcode 5.x 编译的同一个应用程序不会这样做。

如何防止应用程序以横向方式隐藏状态栏?基本上,我如何才能禁用 Apple/Xcode 强加给我的这个“超级棒”功能?

附言我尝试使用以下代码更新视图控制器,但没有帮助。

- (BOOL)prefersStatusBarHidden {
    return NO;
}

【问题讨论】:

    标签: ios iphone xcode6


    【解决方案1】:

    最佳解决方案

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

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

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

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

    然后,瞧!

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


    参考:On iOS8, displaying my app in landscape mode will hide the status bar but on iOS 7 the status bar is displayed on both orientations

    【讨论】:

      【解决方案2】:

      我正在使用

      #define IS_IOS8 SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")
      
      -(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
          [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
      
          if (IS_IOS8){
                  [[UIApplication sharedApplication] setStatusBarHidden:NO];
          }
      }
      

      【讨论】:

      • -willAnimateRotationToInterfaceOrientation 已弃用
      【解决方案3】:

      Info.plist

      中将“基于控制器的状态栏外观”设置为YES

      然后将以下代码放入所需的视图控制器中:

      - (BOOL)prefersStatusBarHidden {
          return NO;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-21
        • 1970-01-01
        • 2015-12-05
        • 2014-11-14
        • 1970-01-01
        • 2017-05-30
        • 1970-01-01
        相关资源
        最近更新 更多