即使在阅读了几帧相对于视图的帖子之后,我仍然无法实现这一点。我打开Xcode(7.3),为IOS创建一个新的游戏项目。在默认场景文件中,在addChild之后,我添加以下代码:
Cmd1.NamedParameters = True
当我为iPhone 6s运行时,我得到以下结果:
print(self.view!.bounds.width)
print(self.view!.bounds.height)
print(self.frame.size.width)
print(self.frame.size.height)
print(UIScreen.mainScreen().bounds.size.width)
print(UIScreen.mainScreen().bounds.size.height)
我可以猜测前两个数字是Retina Pixel尺寸为x2。我想了解为什么帧大小报告1024x768?
然后我添加以下代码来调整一个简单的背景图像以填充屏幕:
667.0
375.0
1024.0
768.0
667.0
375.0
我得到的图像小于屏幕尺寸。如果选择横向模式,图像会显示得更小。
我尝试将边界宽度/高度乘以两个,希望得到实际的屏幕尺寸,但随后图像变得太大。我还尝试了帧大小,使图像比屏幕稍大。
我混淆的主要原因是,除了缺乏知识之外,我在一堂课上看到了这个确切的例子。要么我错过了一些明显的东西?
答案 0 :(得分:8)
帧的格式为1024x768,因为它是以点而非像素定义的。
如果您希望场景与屏幕大小相同,则在GameViewController中显示场景之前,之前:
skView.presentScene(scene)
使用它:
scene.size = self.view.frame.size
这将使场景成为屏幕的确切大小。
然后您可以轻松地使图像像这样填充场景:
func addBackground() {
let bgTexture = SKTexture(imageNamed: "NAME")
let bgSprite = SKSpriteNode(texture: bgTexture, color: SKColor.clearColor(), size: scene.size)
bgSprite.anchorPoint = CGPoint(x: 0, y: 0)
bgSprite.position = self.frame.origin
self.addChild(bgSprite)
}
此外,您可能想要了解视图边界与其边界之间的差异。