SSH This
SSH This

Reputation: 1929

Odd Positioning of SKLabelNode

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:

enter image description here

Why isn't "0" or CGRectGetMinX(self.frame) the correct value for positioning top left?

Upvotes: 3

Views: 420

Answers (1)

Whirlwind
Whirlwind

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

Related Questions