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:
为什么“0”或CGRectGetMinX(self.frame)
不是正确的左上角定位值?
答案 0 :(得分:2)
因为场景大小不一定与视图的大小相同。默认情况下,场景大小为1024x768。我可以看到,你使用的iPhone 6s +与默认场景的大小相比具有不同的比例和不同的尺寸。
要对此进行调试,请设置一个断点,或者只打印scene.size
和scene.view.size.
如果您在视图控制器中设置了场景,则可以使场景具有相同的视图大小:
scene.size = view.bounds.size
现在,当您将x
位置设为0(并将y
设置为CGRectGetMaxY
)时,标签将位于左上角。