【发布时间】: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
UIViewControllerclass reference 声称“在iOS 8 中,所有与旋转相关的方法都已弃用”,但iOS 8 仍然调用并尊重supportedInterfaceOrientations(:_)。 (这在早期的 Beta 种子中并非如此)。我在 Xcode 6.3.1 中创建的新示例项目按预期工作。