使用 Swift 使 SKScene 填满整个屏幕

Posted

技术标签:

【中文标题】使用 Swift 使 SKScene 填满整个屏幕【英文标题】:Make SKScene fill whole screen using Swift 【发布时间】:2014-09-19 11:55:06 【问题描述】:

我在GameViewController.swift中有以下内容

class GameViewController: UIViewController 

    override func viewWillLayoutSubviews() 
        super.viewWillLayoutSubviews()
        println(self.view.frame.size)
        var skView:SKView = self.view as SKView
        if skView.scene == nil 
            skView.showsFPS = false
            skView.showsNodeCount = false

            // Create and configure the scene.
            var scene : SKScene = GameScene(size: skView.bounds.size)
            scene.scaleMode = SKSceneScaleMode.AspectFill

            // Present the scene.
            skView.presentScene(scene)
        
    

    override func prefersStatusBarHidden() -> Bool 
        return true
    

打印出来:

(320.0,480.0)

如何让GameScene填满整个屏幕,而不是在屏幕的顶部和底部留下黑带?

GameScene.swift中的代码

class GameScene: SKScene 
    override func didMoveToView(view: SKView) 
        /* Setup your scene here */
        var background : SKSpriteNode = SKSpriteNode (imageNamed: "background.png")
        background.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2)
        self.addChild(background)
    

background.png 是大小为640x1138 的图像

部署目标是ios 7.1

我使用的是 Xcode 6.0.1(测试版)

【问题讨论】:

你已经解决了吗? 是的@MarkusRautopuro,我在下面回答了我的问题 【参考方案1】:
    添加启动屏幕:

新建文件 - iOS - 用户界面 - 启动屏幕

    将新启动屏幕的名称设置为:

项目 - 常规 - 启动屏幕文件

    在 GameViewController 集合中

sceneNode.scaleMode = .resizeFill

【讨论】:

您能解释一下为什么添加启动屏幕会修复整个应用的内容填充问题吗?【参考方案2】:

我不得不在Images.xcassets 中手动添加一个名为LauchImage 的图像集。

【讨论】:

这看起来就像您刚刚将文件添加到项目文件夹并解决了问题。我有同样的问题并设法通过在另一个视图中添加一个按钮来解决它(绝对不知道为什么会这样)但我希望有一个更好的解决方案,因为我不需要这个按钮。【参考方案3】:

您需要调整背景节点的大小以匹配场景。

background.size = self.frame.size

【讨论】:

sceneGameViewController.swift 中的一个变量,backgroundGameScene.swift【参考方案4】:

首先进入你的 Xcode 项目

点击.xcodeproj文件

然后在部署信息下应该有一个复选框,说需要全屏检查,然后应该使用整个屏幕!

编辑

您还必须分配一个启动屏幕,因为它对我来说暂时是全屏的,但一旦我删除启动屏幕就停止了,您可以在它所在的部署信息下分配它

应用图标和启动图像

即使你没有创建一个 Xcode 通常会在你第一次创建项目时为你创建一个,它应该在名称“main”下

【讨论】:

以上是关于使用 Swift 使 SKScene 填满整个屏幕的主要内容,如果未能解决你的问题,请参考以下文章

调整 ImageView 的大小以使整个布局填满屏幕

约束文本字段,使它们之间有均匀的空间并填满整个屏幕

SpriteKit SKScene 未正确调整大小以适合 iPhone 12

SpriteKit - SKScene 边界不等于 SKView 边界

背景没有填满整个视图 SpriteKit

tableview 没有用导航栏填满情节提要中的整个屏幕