Решение с удалением всех подпредставлений из представления и последующим представлением SKScene.
Примечание : я знаю, что это не лучшее решение, но пока нет другого выбора, поэтомуЯ изменил свой код следующим образом:
override func viewDidLoad() {
super.viewDidLoad()
self.perform(#selector(handleDelay), with: nil, afterDelay: 3.0)
}
@objc fileprivate func handleDelay() {
self.view.subviews.forEach {$0.removeFromSuperview()}
if let view = self.view as! SKView? {
// Load the SKScene from 'GameScene.swift' and should set it's size
let scene = SecondGameScene(size: self.view.frame.size)
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill
// Present the scene
view.presentScene(scene)
view.ignoresSiblingOrder = true
view.showsFPS = false
view.showsNodeCount = false
}
}
ОБНОВЛЕНИЕ: Наконец-то я нашел правильный путь для перехода из SKScene и UIView Controller и наоборот.
Например (Перемещениеот SKScene до UIViewController ):
fileprivate func moveToUIViewController(storyBoardId: String) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: storyBoardId)
vc.view.frame = self.frame
vc.view.layoutIfNeeded()
self.view?.window?.rootViewController?.present(vc, animated: true, completion: nil)
}
(Переход от UIViewController до SKScene ):
fileprivate func returnToSKScene() {
for element in self.view.subviews {
element.removeFromSuperview()
}
self.dismiss(animated: true) {
if let view = self.view as! SKView? {
// Load the SKScene
var scene: SKScene
scene = AboutScene(size: sceneSize)
// Set the scale mode
scene.scaleMode = .aspectFill
let transition = SKTransition.moveIn(with: .up, duration: 0.2)
// Present the scene
view.presentScene(scene, transition: transition)
view.ignoresSiblingOrder = true
view.showsFPS = false
view.showsNodeCount = false
view.showsPhysics = false
}
}
}
Не забудьте изменить UIViewController view class с "SKView":
Выберите вид из Раскадровки -> Инспектор идентификации -> Пользовательский класс.
2.Выберите SKView из раскрывающегося списка Класс.