错误的iOS8状态栏?

Posted

技术标签:

【中文标题】错误的iOS8状态栏?【英文标题】:Erroneous iOS8 status bar? 【发布时间】:2015-05-18 16:22:43 【问题描述】:

我正在开发一个在 ios7 和 iOS8 上运行的应用程序,它只有一个支持多个方向的屏幕,其他屏幕不应该旋转。为此,我在应用的 plist 中启用了应用范围内的所有“设备方向”设置,并让每个控制器返回其自己的方向设置。

界面方向行为现在是正确的,除了 iOS8 上的状态栏。以下是重现问题的最简单方法的一些屏幕截图:

当设备处于纵向时,一切正常。

在 iOS7 上,旋转设备不会导致任何问题。

在 iOS8 上,旋转设备会导致状态栏也旋转,但界面的其余部分不会。

这个演示应用只有一个视图控制器。这是 Swift 代码:

import UIKit
class TestController: UIViewController 
    override func supportedInterfaceOrientations() -> Int 
        return Int(UIInterfaceOrientationMask.Portrait.rawValue)
    

有没有办法在 iOS8 中修复或解决这个问题?

【问题讨论】:

漂亮的屏幕截图。 :) 您能否将演示应用程序发布到某个地方,例如 github,我可以在哪里下载并试用它?我在 iOS 8 的早期就看到过这种问题,但我现在对导致它的原因有点模糊。我的猜测是其他地方有问题(在您的 Info.plist 或 applicationDidFinishLaunching 代码中),但如果我自己能看到,那将是最简单的。 尽管the UIViewController class reference 声称“在iOS 8 中,所有与旋转相关的方法都已弃用”,但iOS 8 仍然调用并尊重supportedInterfaceOrientations(:_)。 (这在早期的 Beta 种子中并非如此)。我在 Xcode 6.3.1 中创建的新示例项目按预期工作。 【参考方案1】:

感谢 cmets,他们帮助我指明了正确的方向。我之前简化问题的尝试仍然在原始应用程序中,并且无法在全新的应用程序中重现该问题...

问题是由多个 UIWindow 引起的。另一个窗口用于在某些情况下以模态方式呈现信息,因此我们只是让它无形地悬停在其他所有内容之上。但是,这可能是一种不好的方法,因为该窗口会劫持原始窗口应接收的一些调用。

【讨论】:

以上是关于错误的iOS8状态栏?的主要内容,如果未能解决你的问题,请参考以下文章

iOS8 Xcode 6 Cordova 状态栏未正确隐藏

在iOS8中以纵向模式隐藏状态栏

Phonegap 3.8.0 & iOS8 状态栏

在更多标签栏控制器IOS8中以选定状态显示的图标

iOS 8 启动图像文件 - 导航栏和状态栏

如何使用点击手势(iOS8 / Swift)在 pageViewController 上显示/隐藏状态栏