3

Ich versuche, eine SKLabelNode zu der oben links meiner Szene hinzuzufügen. Derzeit bin ich zu erreichen diese mit einem Wert von „300“Odd Positionierung von SKLabelNode

func addMoneyLabel() { 
     let moneyLabel = SKLabelNode(fontNamed:"Copperplate") 
     moneyLabel.fontSize = 25 
     print("CGRectGetMidX(self.frame),", CGRectGetMidX(self.frame)) 
     print("CGRectGetMinX(self.frame),", CGRectGetMinX(self.frame)) 
     moneyLabel.position = CGPoint(
      x:300, 
      y:CGRectGetMaxY(self.frame) 
     ) 
     moneyLabel.text = "$500" 
     moneyLabel.verticalAlignmentMode = SKLabelVerticalAlignmentMode.Top 
     moneyLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Left 
     self.addChild(moneyLabel) 
    } 

Dies erzeugt ein Bild, das wie folgt aussieht:

enter image description here

Warum nicht „0“ oder CGRectGetMinX(self.frame) der richtige Wert für Positionierung oben links?

Antwort

2

Da die Szenengröße nicht unbedingt die gleiche wie die Größe der Ansicht ist. Standardmäßig ist die Szenengröße 1024 x 768. Wie ich sehen kann, verwenden Sie das iPhone 6s +, das im Vergleich zur Standardgröße der Szene unterschiedliche Proportionen und unterschiedliche Abmessungen hat.

Um dies zu debuggen, einen Haltepunkt setzen, oder einfach nur drucken scene.size und scene.view.size.

Sie eine Szene machen können die gleiche Größe einer Ansicht haben, wenn Sie dies in Ihrem View-Controller-Set:

scene.size = view.bounds.size 

Wenn Sie jetzt die Position x auf 0 setzen (und y auf CGRectGetMaxY setzen), wird das Label in der oberen linken Ecke platziert.