I am trying to add a SKLabelNode
to the top left of my scene. Currently I am achieving this using a value of "300"
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)
}
This produces an image that looks like this:
Why isn't "0" or CGRectGetMinX(self.frame)
the correct value for positioning top left?
Because the scene size is not necessarily the same as view's size. By default, scene size is 1024x768. As I can see, you are using iPhone 6s+ which has different proportion and different dimension in compare to default scene's size.
To debug this, put a break point, or just print scene.size
and scene.view.size.
You can make a scene to have the same size of a view, if you set this in your view controller:
scene.size = view.bounds.size
Now, when you set x
position to 0 (and set y
to CGRectGetMaxY
), the label will be placed in top left corner.