首页 > 解决方案 > 如何选择 Xcode 的兼容模式在不同设备上重新自动布局?

问题描述

下午好,

关于苹果最近的电子邮件,其中陈述如下:

iPhone 或 iPad 应用程序必须使用 iOS 13 SDK 或更高版本构建,并使用 Xcode 故事板提供应用程序的启动屏幕。

我在应用商店中的应用针对的是 iOS9,而我已经有四年左右没有真正用它们做过任何事情了。他们刚刚过得很好。在尝试更新我的应用程序以符合 Apple 的要求时,我遇到了一些布局问题。

这些应用程序是为 iPad 768 x 1024 点和 iPhone 320 x 568 点编写的。自从我编写应用程序以来,Apple 已经推出了具有更大屏幕等的设备,例如具有 1024 x 1366 点的 iPad 12.9 Pro 或具有 414 x 896 点的 iPhone 11 Pro Max。

如果我在不更改任何代码的情况下使用最新的 Xcode 运行我的应用程序并以 iOS 12.1 及更高版本为目标,则应用程序运行良好。也就是说,它们会自动从 768 x 1024 或 320 x 568 调整到较新的设备更大的点数。老实说,这有点神奇,它不需要额外的代码、约束、大小类、自动布局等即可工作。Xcode 显然在没有我干预的情况下对 View 执行某种神奇的调整大小。这是“兼容模式”吗?此外,调整大小还尊重这些新设备的安全区域,如下所示:

使用启动图像和 Asset.xcassets

现在,当我按照 Apple 的要求从“Asset.xcassets”中删除包含启动屏幕的“Launchimage”并添加“Launchscreen.Storyboard”时,我似乎失去了上述调整大小的魔力。相反,我的应用程序出现在新的较大点设备上,但在 768 x 1024 或 320、568 的原始点上。示例如下:

使用情节提要启动屏幕

我的应用程序旋转,我根据原始点 768 x 1024 和 320 x 768 在代码中处理旋转。但是,即使使用这些点,Xcode 或在运行应用程序时,它只是自动将这些点调整为更大的点系统新的更大的设备。

我的问题是现在我已经从 Launch Images 切换到 Launchscreen.Storyboard,如何打开旧的 Launch Images 做事方式给我的自动调整大小?或者,我的免费发射结束了吗?

我知道我们生活在一个自动布局、约束和类大小的世界中,但是当使用 Launch 图像时,我不必对用于更大点设备的代码做任何事情,但在切换到 Launchscreen.storyboard,也许我会这样做?

我不想在这里偷懒,我会做我需要做的。我只是想了解自动调整我的应用程序大小的启动图像的机制,如果它现在可用,我已经切换到 Launchscreen.storyboard。

经过数周的艰苦谷歌搜索,使用每个 Interface Builder 选项并未能找到解决方案,如果有人能启发我,将不胜感激。

亲切的问候

时髦的黑猩猩

标签: iosxcodeautolayout

解决方案


Launch Images 基本上是在告诉操作系统您支持哪些分辨率。在较大的显示器上,您的视图将自动缩放。

现在启动图像已经消失了,操作系统没有更多的迹象表明应用程序支持哪个结果,所以一切都需要动态。用你的话来说,你的免费发射确实结束了。

您需要做的是为您的视图提供自动布局处理,以便它们可以自动适应任何屏幕尺寸。查看您的扑克计时器应用程序示例,这应该不难实现。您可能想了解UIStackView,这是一个非常有用的工具,可以像您一样构建布局。


推荐阅读