didRotate (from:) устарело с iOS 8.0, поэтому мы собираемся использовать новый метод.
Вам нужно будет сообщить вашему ´GameViewControllerинформировать текущую сцену каждый раз, когда происходит поворот.
1.Протокол CanReceiveTransitionEvents
Давайте определим протокол, чтобы сказать, что тип соответствия (наша сцена) может получать события вращения
protocol CanReceiveTransitionEvents {
func viewWillTransition(to size: CGSize)
}
2.Соответствие нашей сцены CanReceiveRotationEvents
Теперь давайте приведем нашу собственную SKScene в соответствие с протоколом
class GameScene: SKScene, CanReceiveTransitionEvents {
func viewWillTransition(to size: CGSize) {
// this method will be called when a change in screen size occurs
// so add here your code
}
}
Если у вас есть несколько сцен, просто повторите для каждой из них.
3.ViewController должен информировать сцену о каждом повороте
Наконец, давайте заставим контроллер вызывать связанный метод сцены каждый раз, когда обнаруживается вращение
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
guard
let skView = self.view as? SKView,
let canReceiveRotationEvents = skView.scene as? CanReceiveTransitionEvents else { return }
canReceiveRotationEvents.viewWillTransition(to: size)
}
Вот и все.