SKLabelNode 的奇怪定位

Odd Positioning of SKLabelNode

我正在尝试将 SKLabelNode 添加到场景的 左上角 。目前我正在使用值“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 = "0"
        moneyLabel.verticalAlignmentMode = SKLabelVerticalAlignmentMode.Top
        moneyLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Left
        self.addChild(moneyLabel)
    }

这会生成如下所示的图像:

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

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

要调试它,放置一个断点,或者只打印 scene.sizescene.view.size.

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

scene.size = view.bounds.size

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