使用 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
【讨论】:
scene
是 GameViewController.swift
中的一个变量,background
在 GameScene.swift
中【参考方案4】:
首先进入你的 Xcode 项目
点击.xcodeproj文件
然后在部署信息下应该有一个复选框,说需要全屏检查,然后应该使用整个屏幕!
编辑
您还必须分配一个启动屏幕,因为它对我来说暂时是全屏的,但一旦我删除启动屏幕就停止了,您可以在它所在的部署信息下分配它
应用图标和启动图像
即使你没有创建一个 Xcode 通常会在你第一次创建项目时为你创建一个,它应该在名称“main”下
【讨论】:
以上是关于使用 Swift 使 SKScene 填满整个屏幕的主要内容,如果未能解决你的问题,请参考以下文章
SpriteKit SKScene 未正确调整大小以适合 iPhone 12