错误的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状态栏?的主要内容,如果未能解决你的问题,请参考以下文章