swift - SKLabelNode 的奇怪定位

标签 swift sprite-kit coordinates coordinate-systems 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 = "$500"
        moneyLabel.verticalAlignmentMode = SKLabelVerticalAlignmentMode.Top
        moneyLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Left
        self.addChild(moneyLabel)
    }

这会产生一个看起来像这样的图像:

enter image description here

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

最佳答案

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

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

如果你在你的 View Controller 中设置这个,你可以使一个场景与 View 具有相同的大小:

scene.size = view.bounds.size

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

关于swift - SKLabelNode 的奇怪定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39066779/

相关文章:

iOS:UIView 原点在 iOS 9 上没有改变

ios - Swift:if语句检查节点纹理是否与另一个节点纹理相同

ios - 在 10 分钟切片中拆分最后两个小时

iOS UICollectionview 渲染背景颜色错误

ios - 分段控制 TableView 的自定义编辑按钮

swift - 是否可以像 SKScene 一样在 SCNScene 或 SCNNode 中使用 "update(_ currentTime: TimeInterval)"?

ios - 为什么 SpriteKit 不显示任何内容?

java - 设置 java applet 的起始坐标

php - 从mysql数据库中选择最近地理位置的最快方法是什么?

objective-c - 如何在 Xcode 的 UIImageView 中获取 UIImage 坐标(x,y,width,height)