不一致的自动布局渲染

时间:2015-07-02 19:39:21

标签: swift autolayout

自动布局存在一些问题,似乎从我的SpriteKit游戏的一个场景到另一个场景中存在一些不一致:

首先,尽管在第一和第二场景中使用相同的艺术作品,但第一幅画面中的艺术作品显得更小。我不确定这是怎么回事。它们都是PNG文件,保存图像的两个场景是.swift,我将完全相同的图像加载到imagesx.cassets中。然而,当第一个场景打开时,地面节点比第二个场景(我先创建的场景)更短更薄。

另一个不一致是在我使用的第二个场景中:

self.groundbar.anchorPoint = CGPointMake(0.0, 0.5)
self.groundbar.position = CGPointMake(CGRectGetMinX(self.frame), CGRectGetMinY(self.frame) + (self.groundbar.size.height) / 2)

地面栏正好位于我的屏幕底部,位于地面栏中间的中间位置(由y值表示)。

现在,当我在第一个场景上尝试这个SAME代码时,屏幕上没有任何地方。我认为这可能是由于一个奇怪的事实,即地面在第一个场景中渲染得更小,但它不应该重要,因为它的自动布局并且正在引用节点的特定特征。

好像我几乎要处理两组不同的自动布局限制。第一个场景是物理世界,第二个场景不是,但当我删除时,第一个场景中的地面仍然没有正确渲染。

即使我尝试更改anchorPoint,节点的纹理也会在视觉上移动,但碰撞物理保持不变。

为什么自动布局的主要区别? 尽管是同一件艺术作品,为什么我的两件艺术作品在同一场景中呈现时会有不同尺寸?

1 个答案:

答案 0 :(得分:1)

您应该能够检查游戏的视图控制器中正在使用哪个scaleMode。确保scaleModes是相同的(有三个scaleModes:.AspectFill,.AspectFit和.ResizeFill)。接下来,确保anchorPoints匹配(默认情况下,anchorPoints是(x:0,y:0)。可以在游戏的ViewController中检查这两件事。