我正在尝试将 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 = "$500"
moneyLabel.verticalAlignmentMode = SKLabelVerticalAlignmentMode.Top
moneyLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Left
self.addChild(moneyLabel)
}
这会产生一个看起来像这样的图像:
为什么“0”或 CGRectGetMinX(self.frame)
不是定位左上角的正确值?
最佳答案
因为场景大小不一定与 View 大小相同。默认情况下,场景大小为 1024x768。如我所见,您使用的 iPhone 6s+ 与默认场景的大小相比具有不同的比例和不同的尺寸。
要调试它,放置一个断点,或者只打印 scene.size
和 scene.view.size.
如果你在你的 View Controller 中设置这个,你可以使一个场景与 View 具有相同的大小:
scene.size = view.bounds.size
现在,当您将 x
位置设置为 0(并将 y
设置为 CGRectGetMaxY
)时,标签将放置在左上角.
关于swift - SKLabelNode 的奇怪定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39066779/