可调整大小的 iPhone 时代:在九月前准备好你的应用

如何为可调节大小的屏幕准备iPhone应用?你链接的SDK就是苹果划定的界限——Xcode 27的Device Hub明确表示不支持与iOS 26或更早版本相关的应用的缩小模式,而iOS 27发布说明中的所有可调整大小条目都以“使用iOS 27 SDK构建”为条件。

然后:审计所有固定大小的假设(UIScreen.main.bounds读取、硬编码帧、方向门控布局),依赖尺寸类和布局自适应的 SwiftUI 容器,并在 Xcode 27 的可调节大小画布预览和设备中心调整大小模式下持续测试。

当前发布说明中标注为“固定”的门控连续可调整尺寸的前提条件,以确保路径清晰。

苹果的秋季测试版整个夏天都集中在给iPhone开发者的一个信息上:别再假设一个固定的矩形。证据体现在工具和发布说明中,而非主旨演讲——iOS 27 SDK链接带来了可调整大小,预览画布可以自由调整大小,发布说明也在测试周期成熟时清除了最后的结构性障碍。

无论今年秋天发布的硬件是什么,软件合同已经变了。

总结:总结:iOS 27为使用新SDK构建的应用带来了持续的可调整大小;Xcode 27 附带了测试表面(可调整大小的 Canvas 预览,设备中心缩小模式);当前的发布说明——Beta 7版,Beta 7将于8月24日发布——列出了迎新门固定它从已知问题中移除了 beta 4 和 beta 6 版本之间的内容,并且声明了方向不再决定你的应用是否会调整大小。

工作主要是减法:找出你的布局中相信某一屏幕尺寸的地方,然后去除这种信念。下面是检查清单,按我会运行的顺序排列。

为什么是现在

有三个过时的事实定下了时间:

  1. Beta 7于8月24日登陆周期处于稳定阶段——苹果的后期测试版修复而非新增,最终版本每年九月发布。
  2. 可调整范围的边界是SDK链接。Xcode 27的发布说明描述,进入Device Hub的缩小模式时,“与iOS 26或更早SDK关联的应用”为“不支持”。这种模式也贯穿了 iOS 笔记:每个可调整大小的条目都以“使用 iOS 27 SDK 构建”为条件。重建后你就处于可调整尺寸的一侧;如果你一直用旧的 SDK,你就是在选择退出平台的未来。
  3. 最后一个结构性门已经清理。在beta 4时代,一款iPad应用UISupportedInterfaceOrientations省略了四个方向中的任何一个,都被视为不可持续调整规模——这是一个已知问题,其文档中的变通方法包含了我所涵盖的未文档成本可调整尺寸的变通方案帖子.该问题从已知问题中移出了第4版和第6版笔记,当前版本列出了它固定:“从 iOS 27 开始,支持的界面方向不应再成为持续可调整尺寸的条件。”UIKit在7个beta笔记中的已知问题列表是空白的。

总结一下:平台现在期望你的布局是基于其容器,而不是设备规格表。iPad首先通过多任务处理教会了这一课;iOS 27将同样的合同扩展到iPhone。

清单

1. 用iOS 27 SDK重建,然后实际查看

选择加入就是重建。在更改一行布局代码前,先用Xcode 27构建,打开Device Hub的缩小模式,然后拖动。大多数经过良好设计的SwiftUI应用,在首次接触中比作者预期的更好地存活;什么坏了,而且每次都坏在同样的地方——这也是本清单剩下的部分。

2. 寻找固定规模的信念

经典的咬人者,按它们通常咬人的顺序排列:

  • UIScreen.main.bounds用作“屏幕尺寸”。在一个可调整尺寸的世界里,没有该屏幕尺寸,UIScreen.main自 iOS 26 起正式弃用。从你的窗口场景中推导出大小,或者在SwiftUI中,通过以下方式从容器中推导出尺寸GeometryReader节制使用或containerRelativeFrame(_:)是故意使用的。
  • 硬编码帧和魔数针对特定设备校准(“390点宽意味着iPhone”)。任何if width == 设备推断会骗你。
  • 布局是根据方向而非尺寸限制的。定位检查总是代理;随着 iOS 27 的可调整性方向,代理官方成了无用之物。横向和垂直的枝条规模等级,这正是它们的用途。
  • 维度的发布时缓存。启动时测量一次并存储的设备,第一次调整大小后就没用了。

3. 让自适应容器发挥作用

SwiftUI的现代布局工具包正是为此设计的:ViewThatFits在安排之间选择,containerRelativeFrame为了贴合容器而非屏幕尺寸,中间的部分用网格和灵活框架。

如果你的应用是固定矩形时代的,最高杠杆重构通常是替换一个承重设备GeometryReader-加算术布局,用这些原语。UIKit应用在大小类别加号下也能得到同样的结果UICollectionViewCompositionalLayout是环境驱动的部分。

该iOS 27 中工具栏和布局的变更同样的方向推——框架现在在空间耗尽的点给你明确的控制权,空间也动态耗尽。

4. 测试调整尺寸实际发生的位置

Xcode 27 为你提供了两个专门打造的表面,它们都在测试周期早期就成熟了:

  • 可调节大小的画布模式预览版——不再受限于特定的尺寸比例(Beta 2 中这一限制被解除),你可以拖拽应用可能存在的全部形状范围。
  • 设备集线器调整大小模式对于运行应用,逃生口自测试版3起已修复(通过崩溃或背景退出缩小模式不再卡住设备屏幕直到重启)。

每个主屏幕都要经过一次。你发现的bug会聚集在缓存、假设或推断的界面上。

5. 重新审视你多年前设定的旗帜

UIRequiresFullScreen而且很窄UISupportedInterfaceOrientations声明是应用历史上选择不满足iPad多任务需求的方式。两者都没有被弃用,但现在都以新的方式承担了负荷——测试周期花了好几个版本研究它们如何与持续可调整尺寸的交互作用,而beta-4时代的已知问题也存在UIRequiresFullScreen调整大小的行为现在在已解决的问题中标记为“已修复”。

如果这些密钥因为2019年的某个决定而出现在你的Info.plist上,那么这个月正是你有意识地重新做决定的时候。该变通成本分析涵盖了方向设定的副作用,建议在你扩大前检查。

6. 二阶效应预算

可调整大小意味着你的文本展开方式不同,图片裁剪方式不同,你的NavigationSplitView随心所欲地折叠和扩展,你精心调校的空白状态显示出你从未预览过的宽高比。

这些单独看都不难。这也是为什么清单现在开始,而不是硬件发货那周。

我会跳过的部分

别对具体设备妄加猜测。可调整大小的合同包含在你今天可以下载的SDK里,发布说明中有详细说明,并且可以在首个Xcode 27测试版中发布的工具中测试。

如果今年秋天推出折叠iPhone,那些满足上述条件的应用已经准备好了;如果明年春天推出,同样的努力在iPad多任务处理以及平台下一步调整时也能立刻见效。

为机制比准备传闻.

主要要点

  • 选择加入的行就是SDK链接。用iOS 27 SDK和可调大小重建是你应用的问题和机会;Device Hub 在缩小模式下将较旧的 SDK 应用视为不支持。
  • 导向门已清空。声明的方向不再决定可调整大小——当前注释中问题标记为“已修复”,UIKit的已知问题列表为空。
  • 这项工作是在删除假设,而不是添加特征。屏幕大小读取、魔术数布局、方向代理、启动时缓存:查找,替换为容器衍生布局,完成。
  • 在真实表面测试。可调整大小的Canvas预览和Device Hub的缩小模式正是为此而存在;每个屏幕一遍一遍就能找到大部分会咬钩的游戏。

常见问题

我的应用会自动变大吗?

SDK 链接是苹果划定的界限——Xcode 27 的发布说明在不支持 iOS-26 或更早 SDK 应用时调用大小调整模式,而 iOS 说明则将所有可调整性行为都限制在使用 iOS 27 SDK 构建时。

接下来会发生什么取决于你的布局:容器驱动的SwiftUI大多会适应;固定规模的假设会以bug的形式出现。

我还需要声明所有四个方向才能持续调整尺寸吗?

不——当前的发布说明标记了方向条件固定(它在Beta 4和Beta 6之间通过),声明“支持的界面方向不应再成为持续可调整尺寸的条件。”早期测试版需要四者协作,而这也包括应用范围的副作用值得了解如果你发货的话。

是UIRequiresFullScreen现在被弃用了吗?

不。它仍然是支持的密钥,当前笔记中关于其缩放行为的已知问题已在“已解决的问题”栏目中标记为“已修复”。但这正是那种经过多年、值得在可调整尺寸优先平台上重新决定的选择。

这什么时候变得紧急?

iOS 27的最终版本预计将在九月发布,而苹果秋季的SDK需求周期意味着之后的新提交将按苹果惯常的时间表转至iOS 27 SDK。上面的清单对大多数应用来说是专注一周的工作——如果现在开始,可以在发布季前轻松完成。

资料来源

  1. 苹果开发者文档,iOS 和 iPadOS 27 发布说明(Beta 7版,2026年8月24日)问题修复状态来源:166422120:“在iPad上,如果你的iPad应用是用iOS 27 SDK构建的,且其UISupportedInterfaceOrientations不包含所有四种界面方向,应用被视为不可连续调整大小。从 iOS 27 开始,支持的界面方向不应再成为持续可调整尺寸的条件。”该问题在测试版4中属于已知问题,到了测试6版(存档副本确认)后移至已解决的问题;四贝塔四时代UIRequiresFullScreen缩放问题(178558224、178559386、178560235、178562971)同样在已解决的问题中标记为已修复,UIKit在7测试版中的已知问题列表为空。
  2. 苹果开发者文档,Xcode 27 发布说明(Beta 6)。来源:Device Hub 缩小模式,“与 iOS 26 或更早 SDK 关联的应用”不支持“;“iOS预览在可调节大小画布模式下不再受限于特定尺寸比例”;固定的退出-调整大小模式显示错误;以及“Xcode 27 beta 6 包含 iOS 27、iPadOS 27、tvOS 27、watchOS 27、macOS 27 和 visionOS 27 的 Swift 6.4 和 SDK。”
添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论