问题
Ok, this might be a bit hard to explain since I can't include any video to show you what I mean, but I'll give it a shot.
I have added a SKShapeNode
to a scene
and when I rotate the device
orientation
it follows along nicely as expected, positioning itself in the upper left side of the screen whichever way the device
is rotated.
But the SKShapeNode
"lags" behind, that is, when I rotate to a new orientation, the node
remain in the same position for half a second before it is relocated to the new upper left corner. So for instance, in regular portrait mode, the node
is in the upper left screen. If I rotate the device
to the right (landscape
) the node
ends up in the upper right side of the screen (because upper left is now in upper right) for half a second before rearranging itself to the new upper left side of the screen.
Hope that made sense. I suspect this has to do with what delegate I position my code in. Here it is:
class GameScene: SKScene {
override func didMove(to view: SKView) {
let mySquare = SKShapeNode(rectOf: CGSize(width: 50, height: 50))
mySquare.fillColor = SKColor.blue
mySquare.lineWidth = 1
mySquare.position = CGPoint(x: 0, y: 0)
self.addChild(mySquare)
}
}
And the viewController
if that helps:
override func viewDidLayoutSubviews() {
if let view = self.view as! SKView? {
if let scene = SKScene(fileNamed: "GameScene") {
scene.scaleMode = .aspectFill
scene.size = view.frame.size
scene.anchorPoint = CGPoint(x:0 , y: 1)
view.presentScene(scene)
}
view.ignoresSiblingOrder = true
}
}
来源:https://stackoverflow.com/questions/60542976/spritekit-layout-lags-when-device-orientation-changes