【问题标题】:Status bar visible on iPad mini despite setting UIViewControllerBasedStatusBarAppearance to NO尽管将 UIViewControllerBasedStatusBarAppearance 设置为 NO,但 iPad mini 上的状态栏仍可见
【发布时间】:2014-04-22 13:21:02
【问题描述】:

我有一个将 UIViewControllerBasedStatusBarAppearance 设置为 NO 的 iPhone 应用程序。在我测试过的任何设备(iPhone 4、5、5s、5c、iPad 4ish)上,状态栏都不可见。 iPad mini(第一代)除外。 使用 iOS SDK 是 7.1。

状态栏在第一代 iPad mini 上可见。我希望状态栏也会在此设置中隐藏。

我什至尝试将[[UIApplication sharedApplication] setStatusBarHidden:NO]; 添加到didFinishLaunchingWithOptions,但这并没有改变任何东西。

状态栏样式也设置为“在应用程序启动期间隐藏”。

iPad mini 运行 iOS 7.1。

是的,这是一个边缘案例,但这次我无法得到预期的结果。

还有一点信息:我正在使用 cocos2d-iphone v2.1。以前从未遇到过这个问题,因为我已经发布了一堆具有相同引擎的应用程序。 我开始认为这是与组合相关的错误:iOS 7.1 和 iPad mini。

这是设置:

【问题讨论】:

  • 你在.plist中试过了吗?
  • 这是 plist 是的。
  • 在 .plist '查看基于控制器的状态栏外观'中尝试这个关键字并将 bool 设置为 NO。不是'UIViewControllerBasedStatusBarAppearance'
  • sathiamoorthy: 是一样的。
  • 是的,一样。就让我们试试吧。

标签: ios ios7 statusbar


【解决方案1】:

我遇到了同样的问题,我想解释一下。

仅当您在 iPad 上启动 iPhone(仅限)应用程序时才会出现此问题。如果应用是通用的,就不会有任何问题。 最烦人的行为是在没有 Retina 显示屏的 iPad 上使用仅限 iPhone 的应用程序。因为状态栏会覆盖应用程序的顶部。


我的 plist 文件:


仅限 iPhone 的应用程序

iPhone

iPad:

iPad 视网膜:


通用应用

iPhone:

iPad:

iPad 视网膜:

【讨论】:

  • 感谢您的漂亮运行。我应该在有时间的时候报告这个错误......
  • 您找到解决此问题的方法了吗?完全符合您的描述。
  • 但是使用这个我看不到 UIStatusBarStyleLightContent。有人可以帮忙吗?
【解决方案2】:

这是 iPad Mini iOS 7.1 版中的一个错误。

以典型的方式,他们修复了一个问题(空白状态栏)并创建了另一个问题。

请务必将错误报告给 Apple。

【讨论】:

    【解决方案3】:

    您应该将“基于视图控制器的状态栏外观”设置为“是”,并且在您要隐藏的每个视图中调用此方法。最好为您的视图创建一个基本视图控制器并调用一次。

    - (BOOL)prefersStatusBarHidden {
        return YES;
    }
    

    【讨论】:

    • 这听起来很奇怪。自从此设置出现以来,我一直将其设置为 NO。即使我现在将其设置为 YES,我将如何“调用”prefersStatusBarHidden? prefersStatusBarHidden 听起来像是 iOS 会调用的东西。
    • “查看基于控制器的状态栏外观”键告诉系统“我将处理状态栏的可见性”。之后,您可以覆盖 prefersStatusBarHidden 方法。
    • 好的,我试试看。
    • 长话短说,这个答案的理论是“正确的”,UIViewControllerBasedStatusBarAppearance 设置为 YES 询问“prefersStatusBarHidden”中关于状态栏外观的视图。如果我不在那里返回 YES,这将对我产生相反的效果。所以我将其设置为 YES 以隐藏状态栏。它适用于我测试过的设备(iPhone 5,一开始没有问题),但不适用于 iPad mini。我开始认为这是 iPad mini 中的一个错误......
    • 是的,这是做同样事情的另一种方法,所以它可能是一个错误,你最好报告它。
    【解决方案4】:
    <key>UIStatusBarHidden</key>
        <true/>
    <key>UIViewControllerBasedStatusBarAppearance</key>
        <false/>
    

    尝试将其设置到您的 info.plist 文件中。

    【讨论】:

      【解决方案5】:

      我有一个解决方法。添加以下内容:

      - (UIStatusBarStyle) preferredStatusBarStyle {
          return -1;
      }
      

      无论你在哪里:

      - (BOOL)prefersStatusBarHidden {
          return YES;
      }
      

      这显然很糟糕,但它似乎对我有用——至少到目前为止。

      我注意到这会导致如下输出:

      <Error>: CGContextRestoreGState: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context  and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.
      

      我找到了另一种解决方法,这个错误可能是导致这种解决方法起作用的原因,所以我坚持使用它,但值得注意。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        • 2013-08-22
        • 2010-11-15
        • 2019-07-25
        • 1970-01-01
        • 2021-01-24
        相关资源
        最近更新 更多