Odd Positioning of SKLabelNode

时间:2016-08-21 17:11:13

标签: swift sprite-kit coordinates coordinate-systems 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

为什么“0”或CGRectGetMinX(self.frame)不是正确的左上角定位值?

1 个答案:

答案 0 :(得分:2)

因为场景大小不一定与视图的大小相同。默认情况下,场景大小为1024x768。我可以看到,你使用的iPhone 6s +与默认场景的大小相比具有不同的比例和不同的尺寸。

要对此进行调试,请设置一个断点,或者只打印scene.sizescene.view.size.

如果您在视图控制器中设置了场景,则可以使场景具有相同的视图大小:

scene.size = view.bounds.size

现在,当您将x位置设为0(并将y设置为CGRectGetMaxY)时,标签将位于左上角。