iPhone Duo 适配指南:Apple 官方文档的五条规则与一份自查清单
把 Apple《针对 iPhone Duo 设计》拆成能落地的规则:双屏形态、保留区、分屏与排列视图、垂直控制、游戏画面,以及一份十条自查清单。
Apple 在 2026 年 9 月 9 日上线了《针对 iPhone Duo 设计》,这是目前唯一一份官方形态规范。它没有给尺寸表,也没有给断点,核心判断只有一句:用标准系统组件、按尺寸分类做布局,App 就能自动适配各种姿态。
这份文档值得逐条读,但读完之后真正要动手的地方不多。下面把它拆成五条规则、三块容易踩坑的细节,和一份自查清单。
一、先搞清楚设备长什么样
iPhone Duo 是双屏设备:折叠时用外屏,展开后用内屏,两块屏都带前置相机。
- 外屏比其他 iPhone 的屏幕更宽、更短,前置相机在角落、始终可见,并向上扩展为灵动岛所在区域。系统会把工具栏和标签页栏放到侧边,把垂直空间留给内容。
- 内屏的相机藏在屏下,只有相机启用时才显现,界面会相应移开。
- 中间的铰链支持部分折放、平放在桌面、借助边缘立放等多种姿态;横屏展开时控制仍留在侧边,保证两块屏之间切换时位置一致。
关键一句:这仍然是在为 iPhone 设计,iOS 的模式与最佳实践照旧适用。
二、五条最佳实践
- 把 App 做成尺寸可调整的。 用尺寸分类、布局外边距和安全区内边距排布内容,避免固定宽度、避免依赖某一块特定显示屏。
- 两块屏保持一致的体验。 功能和元素状态要跨屏一致;信息层级可以更深一层,但不要另起一套。文档里的例子是「邮件」:折叠时只显示列表或单封邮件,展开后并排显示两者。
- 任何姿态下功能都要完整。 界面适配可用区域时,控件可能溢出、内容可能移动,但用户必须能访问同样的控制和内容。
- 遵循系统的垂直控制布局。 工具栏、标签页栏、导航控制在侧边,不是顶部或底部;内屏横屏时也在侧边。
- 游戏在任何姿态下都可玩。 可以锁定竖屏或横屏,但姿态变化时要填满整个屏幕。
前四条里,第 1 和第 4 条用标准组件基本就能拿到,第 2 和第 3 条必须自己保证。
三、动态布局:别为每种姿态单独设计
文档的态度很明确:支持姿态变化不等于为每种姿态设计一套自定义布局。做法是用尺寸分类——外屏用紧凑宽度、内屏用常规宽度——让现有布局随可用空间扩展。
真正需要额外处理的是保留区(reserved regions):
| 保留区 | 说明 |
|---|---|
| 外屏相机(始终) | 常显,并向上扩展到灵动岛;控制位于侧边时系统会自动避让 |
| 内屏相机(相机启用时) | 启用后界面上移,露出相机 |
| 折叠区(视使用方式) | 部分展开时把内屏分成几块可用区域,中心折叠带不可用 |
系统组件大多会自动适配:提醒、上下文菜单、表单会随折叠状态移动;分屏浏览这类较大的组件会按内屏的对称性调整列宽和外边距。自定义组件需要用 ReservedRegion(SwiftUI)或 UIView.ReservedRegion(UIKit)把内容移开。
三条实操建议:
- 折叠时优先调整,而不是重排。 只移动必要的元素,保持可见、方便轻点;控件突然消失或大幅移位,用户很难追。
- 网格布局用偶数列。 折叠后能整齐对半分,不会切出半个格子。
- 能用自动适配的容器就别自己算。 例如「备忘录」的分屏浏览,折叠时会自动调整两个面板的宽度。
四、分屏浏览与排列视图
分屏浏览在内屏展开,在外屏收成单个面板,切换逻辑和其他 iPhone 上常规环境与紧凑环境之间的切换一样。用标准组件时,宽度和外边距会自动适应折叠状态。
排列视图(arrangement views)是文档里新增的概念:一个容器里放主视图和辅视图,按尺寸、方向和保留区动态排布,分两种:
- 分屏排列:宽大于高时水平分割,高大于宽时垂直分割;
- 叠放排列:部分折叠时两个视图分到两侧,其他时候主视图叠在辅视图之上。
已有的布局可以顺势迁移:HStack / VStack 这类并排或上下结构直接对应分屏排列,ZStack 这类叠放结构对应叠放排列。要注意的是,排列视图只排内容、不管导览——导航分屏视图、标签页视图这些导览容器要放在排列视图外面。
五、垂直控制:最容易做错的一块
外屏更宽更短,系统把工具栏和标签页栏竖着放到侧边。这是 iPhone Duo 最核心的交互特征,也是最容易做得不像「原生」的地方。文档给的细则密度最高,挑重点:
- 顶部位置留给主要导览(返回、关闭),然后放醒目操作(完成);其余项目保持原有分组。
- 默认从底部向顶部排列,用可见性优先级调整顺序:先调整整个组,再调组内单项。常用操作(邮件「编写」、备忘录「新建」)优先保留。
- 一般不要覆盖默认栏位置。 侧边控制是平台约定,改了会让用户重新学一遍。
- 不需要栏的界面可以用整宽,比如「计算器」;也可以背景或标题通栏、内容内嵌,但前提是不与灵动岛、状态栏冲突。
- 用
ToolbarItemGroup分组,不要手动加固定间距,系统会按可用空间自动处理。 - 控制放在它所影响的内容附近。 邮件里作用于列表的控件,留在列表面板顶部,而不是挪到侧边。
- 每个非纯文本项目同时给标题和符号(
Label),因为溢出菜单和展开形态会用标题。 - 空间不足时二选一:以导览为主的界面,把工具栏项收进溢出菜单、保住标签页栏;以任务为主的界面,压缩标签页栏、保住关键工具栏操作。
- 用系统溢出菜单,省略号只留给溢出菜单,其他菜单换符号。
六、游戏:填满屏幕,别加黑边
游戏的要求单独列了一条,而且很具体:
- 可以锁定竖屏或横屏,但姿态变化时要填满整个屏幕;
- 调整尺寸时,尽量保持文字和控制的大小不变;
- 优先改变宽高比,而不是用信箱模式或邮筒模式;确实避免不了,就在内边距区域加插图,让画面看起来仍是全屏。
站内 214 款游戏里,93.9% 是 iPhone / iPad 通用包,本来就带平板布局。但「有布局」和「填满屏幕」是两件事——通用包同样可能在大屏上留黑边,这也是核验时最容易看出差别的地方。
七、对照站内口径:哪些系统给,哪些要自己做
| 文档要求 | 系统自动? | 核验看什么 |
|---|---|---|
| 尺寸分类与布局 | 用标准组件时基本自动 | 主要页面在展开、合拢下是否都完整 |
| 保留区避让 | 标准组件自动;自定义组件要接 API | 内容有没有被相机或折叠带挡住 |
| 垂直控制 | 标准工具栏、标签页栏自动 | 侧边栏位置是否一致、溢出是否可用 |
| 跨屏状态一致 | 否 | 展开或合拢时是否丢状态、是否重载 |
| 姿态变化功能完整 | 否 | 部分折叠时控件是否还在、是否可点 |
| 游戏填满屏幕 | 否 | 是否有黑边、触控是否错位 |
站内判定「已适配」的三条硬指标——主要页面布局、展开与合拢切换、核心操作——和这份文档的要求基本重合。所以看核验记录时,可以把它当成 HIG 的可执行版本;反过来,做适配时也可以拿站内的记录当回归测试用例。
八、十条自查清单
- 布局没有写死宽度,全部基于布局外边距与安全区
- 外屏用紧凑宽度、内屏用常规宽度,没有为某种姿态单独写一套布局
- 外屏相机、内屏相机、折叠区三处都不会遮挡内容
- 部分折叠时只移动必要元素,没有控件突然消失
- 网格是偶数列,折叠后能整齐对半
- 展开与合拢不丢状态、不重载页面
- 侧边工具栏顺序正确:返回/关闭在顶,完成在醒目位置
- 工具栏项目都带标题与符号(
Label) - 空间不足时的压缩策略明确:保标签页栏,还是保工具栏
- 游戏在任何姿态都填满屏幕,优先改宽高比而非加黑边
九、参考
- 针对 iPhone Duo 设计(Apple HIG,2026 年 9 月 9 日上线)
- Preparing your app for iPhone Duo
- 布局、分屏浏览、工具栏、针对游戏设计
- 开发者接口:
ReservedRegion、ArrangementView、ToolbarItemVisibilityPriority
本文依据官方页面 2026 年 9 月 9 日版本整理,官方更新后以原文为准。如果你在自己的 App 上发现了与文档不一致的地方,欢迎通过页脚的反馈表单告诉我们。