2016-03-31 11 views
3

Auch nach dem Lesen mehrerer Beiträge in Frame vs Ansicht kann ich immer noch nicht funktionieren. Ich öffne Xcode (7.3), erstelle ein neues Spielprojekt für IOS. Auf der Standard-Szenendatei direkt nach addChild, füge ich den folgenden Code:Erhalten der tatsächlichen Ansichtsgröße in Swift/IOS

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) 

I Ergebnisse erhalten folgende, wenn ich es für iPhone 6s laufen:

667.0 
375.0 
1024.0 
768.0 
667.0 
375.0 

Ich denke, dass zuerst zwei Zahlen Retina Pixelgröße bei x2. Ich versuche zu verstehen, warum Frame-Größe 1024x768 meldet?

Dann fügen Sie folgenden Code ich ein einfaches Hintergrundbild, um die Größe des Bildschirms zu füllen:

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) 

ich ein Bild kleiner als die Bildschirmgröße. Das Bild wird noch kleiner angezeigt, wenn ich den Querformat-Modus wähle.

Ich versuchte multipliziert Grenze Breite/Höhe mit zwei, in der Hoffnung, die tatsächliche Bildschirmgröße zu bekommen, aber dann wird das Bild zu groß. Ich habe auch versucht, Bildgröße, die das Bild etwas größer als der Bildschirm macht.

Hauptgrund für meine Verwirrung, neben Mangel an Wissen ist die Tatsache, dass ich dieses genaue Beispiel für eine Lektion gesehen habe, die perfekt funktioniert. Entweder fehlt mir etwas Offensichtliches oder?

Antwort

3

Der Rahmen wird als 1024x768 angegeben, da er in Punkten und nicht in Pixeln definiert ist.

Wenn Sie Ihre Szene die gleiche Größe wie Ihr Bildschirm sein, bevor die Szene in Ihrem GameViewController präsentiert wird, vor:

skView.presentScene(scene)

Verwendung dieses:

scene.size = self.view.frame.size

Dadurch wird die Szene genau so groß wie der Bildschirm.

Dann könnte man leicht ein Bild machen die Szene füllen wie so:

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) 
    } 

Außerdem möchten Sie zwischen einer Ansicht der Schranken für die Differenz lesen, und es ist Rahmen.

+0

Vielen Dank. Ich dachte nicht einmal, dass die "Szene" eine andere Größe als die Bildschirmgröße haben könnte. Wirklich öffnete meine Augen. – cdpalmer

Verwandte Themen