Swift 如何在父母体内定位孩子

Swift 如何在父母体内定位孩子,swift,sprite-kit,Swift,Sprite Kit,我真的不理解定位子节点的逻辑。假设我有一个矩形。如果我没有更改它的锚点,默认情况下子节点将正好出现在中间。但如何将其定位在矩形的左上边缘呢?还是在右边?我试过了 child.zPosition = 1 child.position.y = rect.size.height / 2 rect.addChild(child) 但不是位于Y轴的中间。就在上面的某个地方。我应该使用什么工具来定位与其父节点相关的子节点?SpriteKit中的默认定位点是(0.5,0.5),它是节点/spri

我真的不理解定位子节点的逻辑。假设我有一个矩形。如果我没有更改它的锚点,默认情况下子节点将正好出现在中间。但如何将其定位在矩形的左上边缘呢?还是在右边?我试过了

 child.zPosition = 1
 child.position.y = rect.size.height / 2   
 rect.addChild(child)

<>但不是位于Y轴的中间。就在上面的某个地方。我应该使用什么工具来定位与其父节点相关的子节点?

SpriteKit中的默认定位点是(0.5,0.5),它是节点/sprite的中心。(0,0)是左下角,(1,1)是右上角。看

选择节点的定位点后,可以将其视为坐标系的原点,坐标系的范围是节点的帧大小。位置偏移由子对象的定位点及其父对象的定位点计算/影响

例如,(红色)父节点
rect
的大小为(100100),而(绿色)子节点
child
的大小为(50,50)。在父坐标系中将子位置设置为(-25,25)将产生以下结果

// parent node
let parent = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(100.0, 100.0))
parent.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
self.addChild(parent)

// child node
let child = SKSpriteNode(color: UIColor.greenColor(), size: CGSizeMake(50.0, 50.0))
child.zPosition = 1
child.position = CGPointMake(-parent.size.width/4, parent.size.height/4) // (-25, 25))
parent.addChild(child)


更多关于SpriteKit位置和定位点的实验可以找到。

什么是
eye.size
这里,假设
child
rect
的子节点?是的,对不起,它的意思是
rect.size.height
。我编辑了这是一个多么好的答案。很好的解释,代码示例,甚至图表。