Reputation: 1929
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?
Upvotes: 3
Views: 420
Reputation: 13665
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.
Upvotes: 2