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.size
和 scene.view.size.
如果在视图控制器中进行设置,您可以使场景具有与视图相同的大小:
scene.size = view.bounds.size
现在,当您将 x
位置设置为 0(并将 y
设置为 CGRectGetMaxY
)时,标签将放置在左上角。
我正在尝试将 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.size
和 scene.view.size.
如果在视图控制器中进行设置,您可以使场景具有与视图相同的大小:
scene.size = view.bounds.size
现在,当您将 x
位置设置为 0(并将 y
设置为 CGRectGetMaxY
)时,标签将放置在左上角。