2016-04-12 14 views
3

Ich versuche, die richtige Größe einer Unteransicht (SKView) zu erhalten/einzustellen.So skalieren Sie SKView Unteransicht und SKScene richtig

Ich verwende das Storyboard, um eine UIView und eine Unteransicht zu erstellen, die eine SKView ist. Ich möchte programmgesteuert ein SKScene mit den Abmessungen des SKView erstellen.

Mein Gedanke ist, dass scene.size.height und scene.size.width gleich der Höhe und Breite des SKView sind. Um das zu testen, zeichne ich vier blaue Kreise in jeder Ecke und rote Linien an den Rändern. Ich kann nur die linke untere Ecke sehen, wenn ich alle vier blauen Eckpunkte und Boarderlinien erwarte.

Bitte ignorieren Sie die schwarzen Kreise in der Szene, sie sind irrelevant.

iPhone 6 Screenshot (Portrait)
iPhone 6 Screenshot (portrait)

iPhone 6 Screenshot (Landschaft) iPhone 6 Screenshot (landscape)

I hinzugefügt SW (South West), SE, NE und NW-Etiketten

ViewController mit SKView Referenz Dies ist, wo ich die SKSCene (siehe func newGame)

import UIKit 
import SpriteKit 


class CenterView: UIViewController, ActionDelegate { 
    @IBOutlet weak private var navBar:UINavigationBar! 
    @IBOutlet weak private var titleBar:UINavigationItem! 
    @IBOutlet weak private var gameView:SKView! 

    var navigation:NavigationDelegate? 
    var action:ActionDelegate? 
    var game:GameDelegate? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.action = self 
     newGame() 
    } 

    @IBAction func menuClick(sender: AnyObject) { 
     navigation?.toggleLeftPanel() 
    } 

    func setTitleBarTitle(title: String) { 
     titleBar.title = title 
    } 

    func newGame() { 
     print("skview bounds: \(self.gameView.bounds.size)") 
     let game = GameScene(size: self.gameView.bounds.size) 
     self.game = game 
     game.action = action 
     game.scaleMode = .ResizeFill 
     self.gameView.presentScene(game) 
    } 
} 

Main.storyboard Main.storyboard

Constraints

Constraints

erstellen

Hinzufügen Corner Kreise & Grenzlinien

if let scene = self.scene { 
      let dot = SKShapeNode(circleOfRadius: 10) 
      dot.fillColor = UIColor.blueColor() 
      dot.position = CGPoint(x: 0,y: 0) 

      let dot1 = SKShapeNode(circleOfRadius: 10) 
      dot1.fillColor = UIColor.blueColor() 
      dot1.position = CGPoint(x: scene.size.width,y: 0) 

      let dot2 = SKShapeNode(circleOfRadius: 10) 
      dot2.fillColor = UIColor.blueColor() 
      dot2.position = CGPoint(x: 0,y: scene.size.height) 

      let dot3 = SKShapeNode(circleOfRadius: 10) 
      dot3.fillColor = UIColor.blueColor() 
      dot3.position = CGPoint(x: scene.size.width,y: scene.size.height) 


      let left = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 3, height: scene.size.height)) 
      let top = SKShapeNode(rect: CGRect(x: 0, y: scene.size.height, width: scene.size.width, height: 3)) 
      let right = SKShapeNode(rect: CGRect(x: scene.size.width, y: 0, width: 3, height: scene.size.height)) 
      let bottom = SKShapeNode(rect: CGRect(x: 0, y: 0, width: scene.size.width, height: 3)) 

      left.fillColor = UIColor.redColor() 
      top.fillColor = UIColor.redColor() 
      bottom.fillColor = UIColor.redColor() 
      right.fillColor = UIColor.redColor() 


      scene.addChild(dot) 
      scene.addChild(dot1) 
      scene.addChild(dot2) 
      scene.addChild(dot3) 

      scene.addChild(left) 
      scene.addChild(top) 
      scene.addChild(right) 
      scene.addChild(bottom) 
     } 

Antwort

1

Es stellte sich heraus, dass meine Einschränkungen wurden nicht richtig eingerichtet.

Constraints
ios view constraints

Ergebnis
iPhone 4s portrait