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?
您需要确保包含 SKScene
的 SKView
设置为与其包含框架的边界相匹配。您可以在 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)
此外,制作纵向和横向游戏似乎是一个非常糟糕的主意运行,这会给你带来很多问题,我什至不会尝试。
我最近遇到了这个应用程序的问题,我在尝试使该应用程序通用和纵向时遇到了问题(以前的版本仅在 iPhone 上是横向的)。现在该应用程序将以纵向打开并且看起来正确,但是当设备旋转时它仍然是纵向的。
这是我目前拥有的用于旋转设备(有效)的所有代码:
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return .AllButUpsideDown
} else {
return .All
}
}
但是,这只会旋转设备,不会旋转包含我的游戏的实际 GameScene。如果应用程序是从横向主屏幕启动的,游戏将保持横向。
出于测试目的,我可以从模拟器主屏幕退出并重新启动应用程序,游戏将再次完美运行直到设备旋转。
如何始终以正确的方向呈现 GameScene?
您需要确保包含 SKScene
的 SKView
设置为与其包含框架的边界相匹配。您可以在 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)
此外,制作纵向和横向游戏似乎是一个非常糟糕的主意运行,这会给你带来很多问题,我什至不会尝试。