SpriteKit GameScene 旋转错误

SpriteKit GameScene Rotation Bug

我最近遇到了这个应用程序的问题,我在尝试使该应用程序通用和纵向时遇到了问题(以前的版本仅在 iPhone 上是横向的)。现在该应用程序将以纵向打开并且看起来正确,但是当设备旋转时它仍然是纵向的。

这是我目前拥有的用于旋转设备(有效)的所有代码:

override func shouldAutorotate() -> Bool {
    return true
}

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return .AllButUpsideDown
    } else {
        return .All
    }
}

但是,这只会旋转设备,不会旋转包含我的游戏的实际 GameScene。如果应用程序是从横向主屏幕启动的,游戏将保持横向。

出于测试目的,我可以从模拟器主屏幕退出并重新启动应用程序,游戏将再次完美运行直到设备旋转

如何始终以正确的方向呈现 GameScene?

您需要确保包含 SKSceneSKView 设置为与其包含框架的边界相匹配。您可以在 InterfaceBuilder 中或通过代码使用自动布局来完成此操作。

正如 Good Doug 所说,请尝试设置 skView 大小。

在代码中,您将像这样从 gameViewController 加载第一个场景。 (如果您不使用场景 sks 文件,此方法有效)

    let skView = view as! SKView!
    let scene = StartScene(size: skView.bounds.size)

    skView.ignoresSiblingOrder = true
    scene.scaleMode = .AspectFill

    skView.presentScene(scene)

此外,制作纵向和横向游戏似乎是一个非常糟糕的主意运行,这会给你带来很多问题,我什至不会尝试。