当我向应用商店提交我的第一个iOS应用/游戏时遇到了一个难题。
我被拒绝了,因为我的源代码无法在iPad上运行。 苹果解决方案中心给我发了一条消息,说:“在iPad上进行审核时,我们注意到您的应用未以iPhone分辨率运行”。 我没有达到《 App Store审查指南》中的2.10要求。
这是我第一次提交到App Store,因此我真的不熟悉流程和准则。
如果您遇到同样的情况,请继续阅读。
基本上,Apple让我知道的是,源代码应该可以在iPhone和iPad上正常运行,而无需进行任何修改。 我必须锻炼如何使所有的SKTextures,SKLabelNodes和SKPhyicsBody的显示在iPhone和iPad上都相同,并且分辨率和屏幕尺寸不同。
我开始看看别人做了些什么来解决这个问题,很快的答案就是。 使用SpriteKit时,没有通用指南可以使您的源代码在iPhone和iPad上都能正常工作。 在SpriteKit中,您无需使用Storyboard,因此无法使用真正酷炫的AutoLayouts功能。
经过数周的研究,这就是我整理的内容。 我结合使用了两件事来使其正常工作,并检测设备类型(iPhone或iPad),然后检测屏幕宽度。
就是这样。
步骤1 。 我们将使用Game模板创建一个新的Xcode项目,以解释这一概念。
第二步 。 确保将您的Xcode项目“设备”设置为“通用”。 此选项位于“部署信息”标题下。 还要取消选择左右横向,因为此示例将使用人像风格的应用程序进行说明。

第三步 。 在此解释中,我将向您展示如何更改Game模板中已有的SKLabelNode的字体大小。 我们将字体大小更改为我在标签上的文字,在iPhone和iPad上的比例看起来相同。 该概念可以应用于任何事物,例如更改SKTexture的大小或位置。 您甚至可以使用它来更改SKPhysicsBody的大小。
首先,我们需要声明一个名为screenSize的常量变量,以检测当前屏幕的边界。 这将检测当前屏幕的宽度和高度(以像素为单位)。

步骤4.接下来,我们需要访问当前屏幕的宽度。 我们通过创建另一个常量来做到这一点。 这一次必须在didMoveToView函数中完成,因为我们需要在screenSize上调用一个名为screenWidth的属性。 仅在应用程序运行后才能检测到此情况,这就是我们可以在didMoveToView中执行此操作的原因。

步骤5.接下来,我们需要测试当前的设备类型,iPhone或iPad。 我们还需要在didMoveToView函数中执行此操作,因为它只能在应用程序运行时才能工作。 我们将创建另一个常量变量,这将称为deviceIdiom。 这是我们正在做的简短说明。 为了成功检测到iOS类型,我们使用iOS trait环境属性UITraitCollection公开了UIUserInterfaceIdiom中定义的设备类型。 我们将寻找iPhone特性或iPad特性。

步骤6.到目前为止,我们已经完成了两件事,我们已经检测到屏幕宽度并检测到iOS设备类型。 否,我们不需要将这两部分信息一起使用才能针对每种iOS设备类型准确显示SKLabelNode的字体大小。 为此,我们将结合使用switch语句。

步骤7.在为每种设备类型和屏幕宽度调用所需的字体大小之前,需要注释掉或删除以下代码行。

步骤8.现在,我们可以为每种设备类型和屏幕宽度填写所需的字体大小。 完成后,您可以在模拟器中对其进行测试。 在iPhone和iPad模拟器中进行测试以查看结果。

如果您想知道如何计算出在步骤5的switch case语句中使用的数字范围,我将向您展示在哪里找到该信息。 有一个非常有用的在线资源称为iosres.com。 它显示了所有iOS设备类型并比较了规格。 尤其是逻辑分辨率,即以点为单位的宽度和高度的度量。 感谢您阅读这篇文章,希望对您有所帮助。
有关完整的源代码,请访问DetectiOSType。
非常感谢您阅读这篇文章。
@benkanejohns
www.benkanejohns.com
乌迪米教练