swift - 不一致的自动布局渲染

标签 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)

groundbar 恰好位于我的屏幕底部,groundbar 中间的一半(如 y 值所示)。

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

似乎我几乎要处理两组不同的自动布局约束或其他东西。第一个场景是物理世界,第二个场景不是,但是当我移除第一个场景中的地面时,它仍然没有正确渲染。

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

为什么自动布局存在重大差异? 为什么我的两幅艺术作品在同一场景中渲染时大小不同,尽管它们是相同的艺术作品?

最佳答案

您应该能够检查游戏的 View Controller 中使用的是哪种缩放模式。确保 scaleModes 相同(共有三种 scaleModes:.AspectFill、.AspectFit 和 .ResizeFill)。接下来,确保 anchor 匹配(默认情况下, anchor 为 (x: 0, y:0)。可以在游戏的 ViewController 中检查这两项。

关于swift - 不一致的自动布局渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31193236/

相关文章:

ios - 在自动布局中动态更改 UIScrollView 的大小

ios 自动布局约束问题

ios - Autolayout:原点和大小应根据宽度和高度因素改变

ios - 检测在 `View` 上点击了哪个 `Cell`

Swift UIView 如何在调用绘制函数后添加更多绘图?使用 UIBezierPath

swift - 解析 NSData 时崩溃

ios - ImageView 自动布局从水平边缘固定 60pt,但自动缩放高度?

ios - 如何使用 UIKeyboardImpl.isInHardwareKeyboardMode

ios - TabBarController 中的 PersonViewController

ios - 如何使用约束设置自身 View 高度?