【问题标题】:Node is in the wrong position on iPad 2节点在 iPad 2 上的位置错误
【发布时间】:2017-05-07 10:16:14
【问题描述】:

我最近将我的项目转换为一个通用应用程序。 iPhone 和某些 iPad 版本上的所有内容都正确定位(顶部和底部都有黑条,但这不是这里的问题)。在 iPad 2 上,HUD 节点向上移动了 125 个点。我不明白为什么 iPad 2 上会发生这种情况,而 iPad Air 2 上却没有。还有其他人遇到过这样的问题吗?

我一直在尝试通过在代码中检查设备的确切型号来解决此问题,但这样做时遇到了一些问题。我试过使用UIDevice.current.model(和其他变体),但它只返回“iPhone”或“iPad”,并没有给出任何细节。我发现其他一些帖子解释了如何以另一种方式做到这一点,但还没有让它发挥作用。有没有人有另一种方法来查找设备的特定型号,以便我可以调整该设备的节点?我正在使用 swift 3.0,似乎语法在版本之间也发生了很大变化。

这是我一直在尝试做的事情的链接(到目前为止没有运气):iOS: How to determine the current iPhone/device model in Swift?

【问题讨论】:

    标签: ios swift sprite-kit swift3


    【解决方案1】:

    与其担心 iPhone/iPad,不如担心纵横比。在你的场景上做宽度/高度以获得纵横比。如果您在使用 iPad 2 而不是 iPad air 2 时遇到问题,那么我认为您的应用程序不是通用的。如果你能提供一些关于如何创建场景的资料,我可以告诉你哪里出了问题。

    【讨论】:

    • 在项目设置中,它说它是通用的。我在场景编辑器(.sks 文件)中创建了一个关卡,并像这样创建该关卡的一个实例:Level1(fileNamed: "Level1"),在 viewDidLoad 中,我将场景的大小设置为self.scene?.size = CGSize(width: 1334, height: 750),并将 scaleMode 设置为self.scene?.scaleMode = .aspectFit .我将 HUD 的基础创建为没有纹理、清晰颜色和大小为 1334、750 的 SKSpriteNode,设置其锚点和位置,就像任何其他节点一样,并将其添加到 cameraNode。两台设备的宽高比不一样吗?
    • 你应该在你的 Level1.sks 文件中指定场景大小,你不应该手动创建它
    • 是的,他们确实这样做了,虽然这让你失望,但还有其他事情正在发生,也许它没有正确处理视网膜 gfx,iPad 2 使用 (@1x gfx,iPad Air 2 使用 @2x gfx
    • 我也这样做 - 在 .sks 文件中设置高度和宽度,但如果我没有在代码中设置场景大小,它会放大场景。
    • 你不应该在代码中设置它,如果你放大,那么你有问题
    猜你喜欢
    • 2012-12-03
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 2023-03-18
    • 2018-03-27
    • 1970-01-01
    相关资源
    最近更新 更多