ios - 如何选择 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 执行某种神奇的调整大小。这是“兼容模式”吗?此外,调整大小还尊重这些新设备的安全区域,如下所示:
现在,当我按照 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 选项并未能找到解决方案,如果有人能启发我,将不胜感激。
亲切的问候
时髦的黑猩猩
解决方案
Launch Images 基本上是在告诉操作系统您支持哪些分辨率。在较大的显示器上,您的视图将自动缩放。
现在启动图像已经消失了,操作系统没有更多的迹象表明应用程序支持哪个结果,所以一切都需要动态。用你的话来说,你的免费发射确实结束了。
您需要做的是为您的视图提供自动布局处理,以便它们可以自动适应任何屏幕尺寸。查看您的扑克计时器应用程序示例,这应该不难实现。您可能想了解UIStackView
,这是一个非常有用的工具,可以像您一样构建布局。
推荐阅读
- amazon-web-services - 删除 url 标头中的路径并使用 AWS ALB 重写 URL
- ios - 在运行时可靠地检测 iOS 上的 GPU 系列 3
- angular - oidcSecurityService - 使用隐式流和静默更新的用户定时注销
- javascript - 如何使用threejs为相机设置动画以指向gltf模型的一部分
- javascript - 如何将 javascript 动画添加到 .svg 图像?
- node.js - 成功时触发天蓝色功能失败警报
- php - 使用查询字符串和重定向清除 WooCommerce 购物车
- interrupt - 为什么 atmega32 的中断 INT2 不起作用?
- macos - r8Unorm 纹理的正确混合模式
- amazon-web-services - AWS Glue 脚本,未找到分隔符错误