iPhone Duo 适配指南:iOS 开发者必做的关键调整

iPhone Duo 折叠屏带来多屏多态挑战,本文梳理 Xcode 27.1 升级、布局重构、导航适配、保留区域处理和摄像头切换等核心适配要点。
折叠屏 iPhone Duo 来了,你的 App 准备好了吗
随着 iPhone Duo 折叠屏设备即将发布,iOS 开发者面临一轮新一轮的设备适配工作。这款新设备拥有外屏、内屏以及部分折叠三种形态,加上多方向旋转支持,对应用布局提出了前所未有的挑战。如果你仍在依赖固定屏幕尺寸或旧版构建工具,应用很可能在新设备上出现显示异常甚至无法正常使用。
第一步:升级到 Xcode 27.1
这是最基础也是最关键的一步。Apple 明确要求开发者使用 Xcode 27.1 构建应用,因为只有该版本才支持应用延伸至状态栏和摄像头区域下方。用旧版 Xcode 构建的应用在新设备上会被限制在有限的显示区域内,用户体验将大打折扣。
第二步:彻底抛弃硬编码屏幕尺寸
很多老项目仍然直接使用 UIScreen.main.bounds 获取屏幕尺寸,这在单屏设备上或许能正常工作,但在 iPhone Duo 的多屏多态环境下会立即暴露问题。
正确做法是改用容器相对布局,让视图根据自身所在的容器自动确定尺寸。Apple 推荐的标准布局容器包括:
- SwiftUI:使用
Stack、NavigationStack、NavigationSplitView等标准布局组件 - UIKit:使用
Auto Layout约束系统
此外,Apple 也不建议开发者根据 userInterfaceIdiom 或 UIInterfaceOrientation 做布局决策。更可靠的方式是观察尺寸类(Size Class)的变化,即监听 horizontalSizeClass 和 verticalSizeClass 的切换,让 UI 自动适应不同尺寸场景。
第三步:适配导航栏和工具栏的新位置
iPhone Duo 的 UI 有一项显著变化:在某些设备形态下,工具栏和导航栏可能垂直显示在屏幕侧边。如果你使用了 UIToolbar、UINavigationBar 或 UITabBar 创建自定义导航,很可能无法正确适配。
解决方案是使用标准导航和工具栏 API:
- SwiftUI:为
NavigationStack或NavigationSplitView添加toolbar(content:)修饰器 - UIKit:为已添加到导航控制器的视图控制器设置工具栏项目
这样框架会自动处理不同形态下的导航栏布局。
第四步:处理保留区域(Reserved Regions)
iPhone Duo 引入了新的保留区域,包括折痕分隔线和摄像头遮挡区域。框架自带的视图和容器会自动避开这些区域,但自定义视图需要主动处理。
开发者可以通过以下 API 获取所有保留区域信息:
- SwiftUI:
reservedRegions(kind:options:layoutDirectionBehavior:) - UIKit:
reservedRegions(kind:options:)
需要注意的差异:内屏前置摄像头仅在启用时遮挡视图,而外屏前置摄像头始终遮挡视图内容。
第五步:应对多摄像头切换
iPhone Duo 配备外屏摄像头、内屏摄像头和后置摄像头。打开、闭合或旋转设备都可能改变当前启用的摄像头。开发者应根据摄像头朝向选择合适的摄像头,而不是简单假设只有一个前置摄像头可用。
测试清单:覆盖所有形态和方向
适配完成后,务必在以下场景中逐一验证:
- 外屏显示效果
- 完全展开的内屏显示效果
- 部分折叠状态下的布局表现
- 每种形态下的各方向旋转响应
开发者社区的反应
知名 iOS 开发者 Steve Troughton-Smith 在 Mastodon 上批评 Apple "就像一个全新平台突然发布,却只提前一个月通知"。iOS Dev Weekly 编辑 Juan Marin 则指出这并非第一次——"漂亮设备到来时总会带着作业,而作业永远是我们的",并感慨 "UIScreen.main.bounds 是一个只等某款设备出现便会暴露的 Bug,而现在,这款设备终于来了"。
对于 iOS 客户端开发者、跨屏 UI 架构师以及 App Store 合规测试工程师来说,尽早规划适配方案是避免上线后被动整改的关键。





