3

Я пытаюсь добавить SKLabelNode в вверху слева моей сцены. В настоящее время я достичь этого, используя значение «300»Нечетное позиционирование 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) 
    } 

Это создает изображение, которое выглядит следующим образом:

enter image description here

Почему не «0» или CGRectGetMinX(self.frame) правильное значение позиционирование вверху слева?

ответ

2

Потому что размер сцены не обязательно такой же, как размер вида. По умолчанию размер сцены составляет 1024x768. Как я вижу, вы используете iPhone 6s +, который имеет разную пропорцию и разный размер по сравнению с размером сцены по умолчанию.

Для отладки это, поставить точку останова, или просто напечатать scene.size и scene.view.size.

Вы можете сделать сцену, чтобы иметь тот же размер точки зрения, если вы установите в контроллере представления:

scene.size = view.bounds.size 

Теперь, когда вы установили x в положение 0 (и установите y на CGRectGetMaxY), ярлык будет расположен в верхнем левом углу.