即使在阅读了几帧与视图相关的帖子之后,我仍然无法实现这一点.我打开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)
Run Code Online (Sandbox Code Playgroud)
当我为iPhone 6s运行时,我得到以下结果:
667.0
375.0
1024.0
768.0
667.0
375.0
Run Code Online (Sandbox Code Playgroud)
我可以猜到前两个数字是Retina Pixel尺寸为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)
Run Code Online (Sandbox Code Playgroud)
我得到的图像小于屏幕尺寸.如果选择横向模式,图像会显示得更小.
我尝试将边界宽度/高度乘以两个,希望得到实际的屏幕尺寸,但随后图像变得太大.我也试过帧大小,使图像比屏幕稍大.
除了缺乏知识之外,我混淆的主要原因是我在课程中看到了这个完美的例子.要么我错过了一些明显的东西?
小智 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)
}
Run Code Online (Sandbox Code Playgroud)
此外,您可能想要了解视图边界与其框架之间的差异.
| 归档时间: |
|
| 查看次数: |
20695 次 |
| 最近记录: |