Ios 使用ViewWillLayoutSubView的模拟器中没有显示任何内容
在我的GameView Controller.swift文件中,我删除了viewDidLoad并放入viewWillLayoutSubviews,因为我将在计算中使用设备的尺寸。但是,hello world SKLabelNode不再显示在模拟器中。你知道我做错了什么吗Ios 使用ViewWillLayoutSubView的模拟器中没有显示任何内容,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,在我的GameView Controller.swift文件中,我删除了viewDidLoad并放入viewWillLayoutSubviews,因为我将在计算中使用设备的尺寸。但是,hello world SKLabelNode不再显示在模拟器中。你知道我做错了什么吗 override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() let skView = self.view as
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
let skView = self.view as SKView
if skView.scene != nil{
skView.showsFPS = true
skView.showsNodeCount = true
skView.showsPhysics = true
// Create and configure the scene
let scene = SKScene(size: skView.bounds.size)
scene.scaleMode = SKSceneScaleMode.AspectFill;
// Present Scene
skView.presentScene(scene)
}
场景是通用的,虽然我不太了解swift,但您确定这是“您的”场景加载,而不仅仅是SKScene()?请尝试
GameSecene
而不是SKScene
。顺便说一句,您可以通过在默认的视图控制器代码中将缩放模式设置为.ResizeFill
。@0x141E我尝试过让场景=游戏场景(大小:skView.bounds.size),但没有改变。另一个尝试:在默认的视图控制器代码中,我将scaleMode设置为.ResizeFill并使用默认的GameSecene.swift,但是hello world并没有像它应该的那样位于屏幕中央。不过它确实运行了。@StephenJ我的场景工作正常,因为当我取消注释默认viewDidLoad并注释我的viewWillLayoutSubviews时,会显示hello world。在Xcode创建项目时使用默认GameSecene.swift。调用didMoveToView
后,场景将重新调整大小,因此您应该使用视图的框架来居中标签,而不是self
。