一句话结论
Apple 要求 iOS 开发者使用 Xcode 27.1 并重构基于固定尺寸的布局逻辑,以适配 iPhone Duo 的多形态屏幕及保留区域。
关键要点
- 使用旧版 Xcode 构建的应用无法延伸至 iPhone Duo 的状态栏和摄像头区域下方,必须升级至 Xcode 27.1 才能充分利用屏幕空间。
- 开发者被明确建议避免依赖 `UIScreen.main.bounds` 等固定屏幕尺寸 API,改为使用 `horizontalSizeClass` 和 `verticalSizeClass` 观察布局变化。
- 自定义导航或工具栏若使用 `UIToolbar`、`UINavigationBar` 或 `UITabBar`,在 iPhone Duo 的垂直侧边显示形态下可能无法正确适配,需改用标准 `toolbar(content:)` 修饰器或导航控制器工具栏。
- 开发者需通过 `reservedRegions(kind:options:layoutDirectionBehavior:)`(SwiftUI)或 `reservedRegions(kind:options:)`(UIKit)获取折痕及摄像头遮挡等保留区域信息。
- iPhone Duo 拥有外屏、内屏及后置摄像头,设备开合或旋转会改变启用摄像头,开发者需根据摄像头朝向动态选择拍摄源。
背景与事实
随着折叠屏 iPhone Duo 即将推出,Apple 发布了针对 iOS 开发者的详细适配指南。该设备支持多种屏幕尺寸、布局和方向,包括外屏、更大的内屏以及部分折叠状态。由于硬件形态的复杂性,应用需要在设备闭合、展开或部分折叠时的各种旋转状态下保持布局稳定。
在开发工具方面,Apple 强调使用 Xcode 27.1 是充分利用 iPhone Duo 屏幕空间的前提。旧版本构建的应用程序存在渲染限制,无法延伸至状态栏和摄像头区域下方。在代码实现层面,Apple 明确警告依赖固定 iPhone 屏幕尺寸(如 `UIScreen.main.bounds`)的做法将失效。取而代之的是,开发者应使视图相对于其容器确定尺寸,并采用 SwiftUI 堆栈、导航视图、分栏视图、标准标签栏以及 UIKit Auto Layout 等标准布局容器,以确保 UI 随可用空间自动调整。
此外,布局决策不应基于 `userInterfaceIdiom` 或 `UIInterfaceOrientation`。Apple 建议依赖尺寸类(Size Classes),通过观察 `horizontalSizeClass` 和 `verticalSizeClass` 的变化来适应不同尺寸。针对 UI 组件,指南指出在特定设备形态下,工具栏和导航栏可能垂直显示在屏幕侧边,因此自定义实现可能需要重构为使用 `NavigationStack` 或 `NavigationSplitView` 的标准 API。
关于硬件遮挡,iPhone Duo 引入了新的保留区域,对应屏幕折痕及摄像头硬件。框架提供的视图会自动避开这些区域,但自定义视图需主动识别。内屏前置摄像头启用时可能遮挡视图,而外屏前置摄像头始终遮挡视图。开发者还需处理多摄像头场景,因为打开、闭合或旋转设备都会改变当前启用的摄像头,应用需据此选择合适的拍摄源。
影响分析
对中文开发者而言,这标志着折叠屏从 Android 阵营扩展至 iOS 生态的关键节点。此前 Android 折叠屏(如 Galaxy Z Fold 系列)的适配已使开发者习惯了屏幕折叠、分屏和大小尺寸类变化的逻辑,但 Apple 的 API 设计更注重对标准布局系统的回归。这意味着依赖大量自定义坐标计算或硬编码尺寸的应用将面临较大重构成本。特别是对于游戏、视频编辑等对像素级精度要求高的应用,保留区域(折痕和摄像头遮挡)的处理将直接影响用户体验,需要额外的 UI 设计介入。
从工程角度分析,此次调整并非简单的兼容性补丁,而是迫使开发者重新审视架构。那些能够良好利用 Auto Layout 和 SwiftUI 声明式布局的项目将更容易适配,而大量使用 Frame 硬编码或第三方非标准布局库的项目则需进行底层重构。对于独立开发者或小型团队,提前一个月通知的时间窗口被多位开发者认为过短,可能导致应用商店中相当一部分应用在首发时无法完美适配,从而影响初期用户体验。
适用边界
本文结论仅适用于计划支持 iPhone Duo 硬件形态的 iOS 应用。对于仅运行在标准非折叠 iPhone 或 iPad 上且不计划支持新硬件的设备,上述关于保留区域、侧边工具栏及多摄像头切换的调整并非强制要求,尽管遵循新布局规范仍有利于长期维护。
孤本观察
Apple 此次将 iOS 折叠屏适配的复杂度通过 API 层级进行了标准化封装,但“提前一个月通知”的周期与硬件形态剧烈变化之间的时间差,反映出其在激进创新与开发者生态稳定性之间的权衡策略。





常见问题
使用旧版 Xcode 构建的 iOS 应用在 iPhone Duo 上有什么渲染限制?
无法延伸至状态栏和摄像头区域下方,必须升级至 Xcode 27.1 才能充分利用屏幕空间。
Apple 建议 iOS 开发者避免使用哪些固定屏幕尺寸 API?
避免依赖 `UIScreen.main.bounds` 等固定屏幕尺寸 API,改用 `horizontalSizeClass` 和 `verticalSizeClass` 观察布局变化。
在 iPhone Duo 垂直侧边显示形态下,哪些自定义 UI 组件可能无法正确适配?
使用 `UIToolbar`、`UINavigationBar` 或 `UITabBar` 的自定义导航或工具栏,需改用标准 `toolbar(content:)` 或导航控制器工具栏。
开发者应如何获取 iPhone Duo 的折痕及摄像头遮挡等保留区域信息?
SwiftUI 使用 `reservedRegions(kind:options:layoutDirectionBehavior:)`,UIKit 使用 `reservedRegions(kind:options:)` 获取保留区域信息。
iPhone Duo 的摄像头切换机制对应用拍摄源选择有何影响?
设备开合或旋转会改变启用摄像头,开发者需根据摄像头朝向动态选择拍摄源,且内屏前置摄像头启用时可能遮挡视图。
来源:InfoQ 中文 AI