在 UIViewController 中居中 SKView:Swift
Center SKView in UIViewController: Swift
我正在使用以下代码在视图控制器上加载 SKView
。但是,当您第一次加载应用程序时,场景中的按钮、标签等会显示在最左下方。但是,在游戏中,当你 return 到场景时,它居中,我该如何解决这个问题?
import UIKit
import SpriteKit
class ViewController: UIViewController {
override func loadView() {
self.view = SKView()
}
override func viewDidLoad() {
super.viewDidLoad()
let scene = StartScene(size: view.bounds.size)
let skView = view as! SKView
skView.ignoresSiblingOrder = true
scene.scaleMode = .resizeFill
skView.presentScene(scene)
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
我建议将您的代码从 viewDidLoad 移动到
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let scene = StartScene(size: view.bounds.size)
let skView = view as! SKView
skView.ignoresSiblingOrder = true
scene.scaleMode = .resizeFill
skView.presentScene(scene)
}
viewDidLayoutSubviews 将在视图重新定位自身或调整大小时被调用
我正在使用以下代码在视图控制器上加载 SKView
。但是,当您第一次加载应用程序时,场景中的按钮、标签等会显示在最左下方。但是,在游戏中,当你 return 到场景时,它居中,我该如何解决这个问题?
import UIKit
import SpriteKit
class ViewController: UIViewController {
override func loadView() {
self.view = SKView()
}
override func viewDidLoad() {
super.viewDidLoad()
let scene = StartScene(size: view.bounds.size)
let skView = view as! SKView
skView.ignoresSiblingOrder = true
scene.scaleMode = .resizeFill
skView.presentScene(scene)
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
我建议将您的代码从 viewDidLoad 移动到
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let scene = StartScene(size: view.bounds.size)
let skView = view as! SKView
skView.ignoresSiblingOrder = true
scene.scaleMode = .resizeFill
skView.presentScene(scene)
}
viewDidLayoutSubviews 将在视图重新定位自身或调整大小时被调用