SpriteKit GameScene旋转Bug

时间:2016-01-21 21:52:30

标签: ios swift screen-orientation device-orientation

我最近遇到了这个应用程序的问题,我在试图使应用程序通用和纵向方向时遇到了(之前的版本只在iPhone上使用)。现在,应用程序将以纵向打开并且看起来正确,但在旋转设备时它仍处于纵向状态。

App Error

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

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

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

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

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

如何以正确的方向持续呈现GameScene?

2 个答案:

答案 0 :(得分:2)

您需要确保将SKView的{​​{1}}设置为与其包含框架的边界相匹配。您可以在InterfaceBuilder中或通过代码使用Autolayout执行此操作。

答案 1 :(得分:1)

正如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)

让游戏以纵向和横向运行似乎是一个非常糟糕的主意,它会给你带来很多我甚至不会尝试的问题。