ielyamani
ielyamani

Reputation: 18581

Make SKScene fill whole screen using Swift

I have the following in 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
    }
}

it prints :

(320.0,480.0)

How to make the GameScene fill the whole screen instead of leaving black bands at the top and bottom of the screen?

the code in 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 is an image of size 640x1138

The deployment target is iOS 7.1

I am using Xcode 6.0.1 (Beta)

Upvotes: 6

Views: 5988

Answers (4)

36Boxes
36Boxes

Reputation: 53

First go onto your Xcode project

click the .xcodeproj file

Then under deployment info there should be a checkbox that says requires full screen check this and then the whole screen should be used!

EDIT

You must also assign a launch screen it as it was full screen for me momentarily but stopped once I removed the launch screen, you can assign It just under the deployment info it is under

App Icons and Launch Images

even if you haven't created one Xcode usually creates one for you when you first make the project it should be under the name "main"

Upvotes: 0

Danil Shaykhutdinov
Danil Shaykhutdinov

Reputation: 2287

  1. Add a Launch Screen:

New File - iOS - User Interface - Launch Screen

  1. Set the name of your new launch screen in:

Project - General - Launch Screen File

  1. In GameViewController set

sceneNode.scaleMode = .resizeFill

Upvotes: 4

ielyamani
ielyamani

Reputation: 18581

I had to manually add an image set named LauchImage in the Images.xcassets.

Upvotes: 2

Donn
Donn

Reputation: 1680

You need to resize your background node to match scene.

background.size = self.frame.size

Upvotes: 0

Related Questions