首页 文章

SpriteKit GameScene旋转Bug

提问于
浏览
0

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

App Error

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

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

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

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

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

How do I consistently present the GameScene in the correct orientation?

2 回答

  • 2

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

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

  • 1

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

相关问题