即使在 frame vs view 中阅读了几篇文章后,我仍然无法正常工作。我打开 Xcode (7.3),为 IOS 创建一个新的游戏项目。在默认场景文件中,在 addChild 之后,添加以下代码:
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)
当我为 iPhone 6s 运行它时,我得到以下结果:
667.0
375.0
1024.0
768.0
667.0
375.0
我可以猜到前两个数字是 x2 的视网膜像素大小。我想了解为什么帧大小报告 1024x768 ?
然后我添加以下代码来调整一个简单的背景图像以填充屏幕:
self.anchorPoint = CGPointMake(0.5,0.5)
let theTexture = SKTexture(imageNamed: "intro_screen_phone")
let theSizeFromBounds = CGSizeMake(self.view!.bounds.width, self.view!.bounds.height)
let theImage = SKSpriteNode(texture: theTexture, color: SKColor.clearColor(), size: theSizeFromBounds)
我得到的图像小于屏幕尺寸。如果我选择横向模式,图像会显示得更小。
我尝试将边界宽度/高度乘以两个,希望得到实际的屏幕尺寸,但图像变得太大了。我还尝试了使图像略大于屏幕的帧大小。
除了缺乏知识之外,我感到困惑的主要原因是我在一节课上看到了这个确切的例子,效果很好。要么我错过了一些明显的东西,要么?
最佳答案
帧被指定为 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)
}
此外,您可能想了解 View 边界和框架之间的区别。
关于ios - 在 Swift/IOS 中获取实际 View 大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36344580/