苹果已在 2026 年 9 月 9 日发布第一款折叠 iPhone,名字是 iPhone Duo。预购从 10 月 16 日太平洋时间凌晨 5 点开始,北京时间当天 20:00。首批包括中国在内的 70 多个国家和地区,10 月 23 日开售;另有 28 个地区是 10 月 30 日。出厂系统是 iOS 27.1。美国起步价 1999 美元(256GB)。规格以 苹果新闻稿为准。
今天要回答的不是「要不要买」,而是已经在 App Store 里的 iOS App:会不会因为折叠屏被淘汰,哪些界面必须改。 开发者文档写得很直:所有 App 都能在 Duo 上运行。用 iOS 27 及之后的 SDK 构建的,会随折叠改变尺寸。合上回到外屏,打开铺进内屏。被拉长、裁切或放错位置的,是写死屏幕尺寸、固定方向、按机型假设布局的那些界面。
两块屏比例相同,内容可以按比例缩放,所以很多列表和表单不用重画。内屏 7.6 英寸,比 iPhone 18 Pro Max 大 50%;外屏 5.4 英寸,面积大约是 iPhone 18 Pro 的 90%,合上接近护照大小。同一套单栏放大之后,信息流会空,分栏才用得上这块屏。
我们 9 月 9 日的手记按当天流传的 Ultra 写了硬件。产品名以新闻稿的 iPhone Duo 为准。这篇只谈现有 App 的界面。
现有 iOS App 不会被淘汰。业务不用重写。要重做的是把「屏幕永远是那一个尺寸」写进布局的界面:写死宽高、按 phone/pad 分支、自定义栏,以及相机、视频和该在内屏分栏的工作区。
能跑,不等于不用改
苹果在 Prepare for iPhone Duo 里把底线写在第一段:所有 App 都会运行。用 iOS 27 SDK 及以后构建的,打开时展开到内屏,合上时回到外屏。硬编码的屏幕尺寸、固定方向和设备假设会把布局拉坏。
所以「淘汰」说重了。账号、接口、内购、推送都不因为一块铰链重写。用户 10 月 23 日打开旧包,进程还在。他看见的可能是内屏正中一块旧手机窗口,四周是空的。对起步 1999 美元的 7.6 英寸来说,这不是完成。
人机指南也把范围收窄了:支持各种姿势,不是为每种折叠角各画一版。外屏用 compact 宽,内屏用 regular 宽,就覆盖了基本姿势。尺寸变化时不要重做 App,让现有布局按可用空间展开。见 Preparing your app for iPhone Duo。
三档 SDK,决定内屏怎么用
同一套二进制,用户看见的空档取决于你用哪一版 SDK 编出来。苹果给的对照是这样:
| 构建 SDK | 打开(内屏) | 合上(外屏) |
|---|---|---|
| iOS 26 及更早 | 窗口居中,四周留白 | 内容在状态栏和摄像头左侧 |
| iOS 27 | 铺满大部分内屏,仍避开右侧状态栏 | 随尺寸回到外屏,空档比旧 SDK 小 |
| iOS 27.1 及以后 | 用满整块屏;工具栏和标签栏改到状态栏下方竖排 | 同一套竖排栏,随折叠切换屏幕 |
Duo 出厂就是 27.1。只为了「能装上」停在旧 SDK,内屏就是留白。升到 27.1 SDK 之前,先确认内容能跟着栏变成竖排,否则全屏内容会和系统栏重叠。
哪些应用必须改界面
不是按品类一刀切。先在工程里搜下面这些假设。搜得到,这一屏就要改布局;搜不到,多半随系统容器走。
写死屏幕尺寸
搜索 UIScreen.main。折叠会在一次会话中途改掉 App 的尺寸,而且这个尺寸经常不等于整块屏幕。
UIScreen.main.bounds改成view.bounds或window.bounds。SwiftUI 用GeometryReader或onGeometryChange。- 只在启动或
viewIsAppearing读一次不够。依赖尺寸的布局放进layoutSubviews/viewDidLayoutSubviews,尺寸变化用viewWillTransition(to:with:)。 - 缩放用
traitCollection.displayScale或@Environment(\.displayScale)。 UIWindow(frame: UIScreen.main.bounds)改成UIWindow(windowScene:)。不要把一个UIScreen存下来。bounds.height == 844这种已知机型高度表对不上 Duo。
用方向或机型分支
在 Duo 上,设备方向不能告诉你 App 是宽是高。布局里去掉对这些属性的依赖:UIDevice.current.orientation、statusBarOrientation、interfaceOrientation(包括 windowScene.effectiveGeometry.interfaceOrientation)。要判断宽大于高,比较手头空间的宽和高。
有了 Duo,再加上可调整大小的 iPhone 镜像,一个 iPhone App 可以是任意 size class 组合。内屏应当是 iPad 布局的自然延伸,而不是另一套产品。
- 不要用
userInterfaceIdiom == .phone或== .pad选布局。按 size class 或可用空间选。 - 不要把 regular 宽当成「这是 iPad」。这段代码现在会在 iPhone 内屏上执行。外屏竖持仍是 compact 宽、regular 高,和普通 iPhone 一样。
- iPad 分支里如果还有只给大屏的死尺寸,内屏会把那套死尺寸原样跑出来。
自定义栏要变竖排
系统的标签栏、导航和锁屏控制,在 27.1 上改到侧面、状态栏下面,把竖向空间留给内容。打开后主屏幕是两页,左侧是可滚动的 Today View。状态栏收成角落里的圆形。Dynamic Island 也改成竖在外屏和内屏的侧面。
自己画的顶栏、底栏、悬浮按钮如果还按「底部一条横栏」定位,会和竖排系统栏抢边,或压住内屏右侧的状态栏。自定义栏和全出血画布用 iOS 27.1 的 ReservedRegion(SwiftUI)或 UIViewReservedRegion(UIKit),把折痕和摄像头遮挡留出来。系统分栏会自己躲开折痕;自己用 HStack / ZStack 拼的不会。
半折时,系统的 arrangement 会把主视图放到折痕的一侧、次视图放到另一侧。全开或合上、没有分割型保留区时,overlay 仍是叠在一起。自定义叠层要自己处理这一下。
视频、相机、阅读、通话
半折时内屏像两半。媒体、相机、阅读、视频通话应把内容放一半、控制放另一半,不要骑在折痕上。
苹果自己的相机已经按双屏做了:外屏看后置摄像头的自拍预览(Duo Preview),外屏播放儿童提示动画,Duo FaceTime 让旁边的人用外屏加入。第三方相机、滤镜、直播如果只有一块预览画布,打开后主体会被折痕切开。
全出血图片和视频用 .scaleAspectFill 或 .aspectRatio(contentMode: .fill) 时,更宽的内屏会裁掉主体。按当前 size class 或宽高比在 fill 和 fit 之间选,或设一个焦点。新闻稿里 Netflix 把外屏用来刷短片、打开后用大屏;Zoom 把内屏分成共享内容和与会者。这是改界面的样子:同一套内容换容器,不是换一套业务。
内屏分栏,外屏单栏
iOS 27 第一次在 iPhone 上做系统 Split View:两个 App 并排,或同一 App 两个窗口,例如两个 Safari。也可以一边看内容,一边和 Siri AI 说话,并把一对 App 存下来下次再开。
邮件、文档、Slack 这类工作区,内屏如果还是一条被拉宽的时间线,密度是浪费。SwiftUI 用 NavigationSplitView,UIKit 用 UISplitViewController:内屏侧栏或双栏,外屏收成一栏,和普通 iPhone 上 regular / compact 的切换同一条路径。网格用偶数栏,折痕两边才切得开。栏宽要在折叠时仍然看得清。
新闻稿点名 Slack 已经把整个工作区铺进内屏。没有 iPad 分栏的协作工具,这是 10 月 23 日前最值得排的一屏,但它仍是布局,不是重写消息同步。
哪些可以先不重做
| 界面 | 不改,10 月 23 日会怎样 | 要不要重做 |
|---|---|---|
| 设置、表单、系统列表 | 能用。旧 SDK 内屏留白;新 SDK 单列被拉宽 | 不用重做。升到 27.1 SDK,确认竖排栏不挡字 |
| 已经适配 iPad 的自适应布局 | 内屏会走到 regular 宽那条路径 | 小改。去掉「regular 宽 = 只有 iPad」 |
写死 390/844、UIScreen.main |
拉伸、裁切、控件错位 | 必须改布局,不必重写业务 |
| 相机、视频通话、阅读、全屏视频 | 主体可能骑在折痕上,fill 会裁掉人脸 | 要改这一屏:半折分边、焦点、安全区 |
| 邮件、文档、协作工作区 | 能用,内屏是一条被拉宽的时间线 | 建议做分栏。外屏仍是单栏 |
| 游戏、地图、设计画布 | 比例一变就露边,或裁掉主体和 HUD | 要改画布和安全区,不是换玩法 |
只在外屏当普通手机用、内屏留白也能接受的内部工具,可以跑。上架主路径、截图和推荐位则另说:App Store Connect 可以预览 iPhone Duo 素材,featuring 提名里可以写明支持全部姿势。那是商店页,不是另一套代码。
不要为合上、打开、半折各维护三套完全不同的界面。指南的要求是一套布局随空间展开。
发布前怎么验
在 Xcode 里对编码助手说 get my app ready for iPhone Duo。它会扫上面这些模式,并给出改法。用别的 agent 时,终端跑 xcrun agent skills export 把技能导出来。技能扫不全,写死高度和自定义栏还是要人看。
三处测试,文档把 Duo 模拟器标成完整体验:
- Xcode 27.1 里的 iPhone Duo 模拟器
- Device Hub 里可调整大小的 iOS 模拟器
- macOS 27 上的 iPhone 镜像,把窗口拉到两个方向的极端尺寸
至少过这六种:合上、打开、半折,各加竖持和横持。再加一次系统 Split View。自定义相机和视频再单独看半折时折痕有没有切开主体。
- Xcode 27.1 和 Duo 模拟器装到单独的 Mac,白天的会议和出包不要挤在同一台笔记本上。
- 先跑技能扫描,再手工看自定义栏、全出血视频和半折。
- 没有 regular 宽布局的,不要在 10 月 16 日预购当天才开始做分栏。
- 商店截图和代码分开排。截图补不上,不代表旧包会从 Duo 上消失。
一台 Mac、Developer 计划和 CI 的月账单,我们在 9 月 14 日的成本文里拆过。Duo 不会把那张表归零,它只是让 27.1 SDK 和模拟器有一台干净的机器可装。
常见问题
现有 iOS App 不更新,10 月 23 日还能打开吗?
能。苹果写明所有 App 都会运行。用 iOS 26 或更早 SDK 构建的,打开时居中留白,合上时内容偏到状态栏和摄像头左侧。能打开不等于界面已经适配。
是不是要为折叠屏把 App 重写一遍?
不用重写业务、账号和接口。要改的是布局假设:UIScreen.main、固定方向、phone/pad 分支、写死宽高,以及自定义工具栏。已经用系统容器并支持 iPad 尺寸变化的,工作量最小。
哪些类型最该排期改界面?
相机、视频通话、阅读和全屏视频要处理折痕和半折。邮件、文档和协作工具要在内屏做分栏、外屏收回单栏。游戏、地图和设计画布要检查拉伸与安全区。标准列表和设置可以随 SDK 升级先上。
只适配 iPhone、没有 iPad 版,会不会不能用?
不会不能用。外屏竖持仍是 compact 宽。内屏是 regular 宽。代码若把 regular 宽当成只有 iPad 才显示的功能,这些功能会在 Duo 内屏出现;若根本没有 regular 布局,新 SDK 会把单栏拉宽,旧 SDK 则留白。
iPhone Duo 出厂是哪一版系统?
新闻稿写明配备 iOS 27.1。铺满内屏、工具栏和标签栏改到状态栏下方竖排,对应的是 iOS 27.1 SDK 及以后。iOS 27 SDK 仍会避开右侧状态栏。
预购和开售是哪天?
10 月 16 日太平洋时间凌晨 5 点开始预购,北京时间当天 20:00。10 月 23 日起在包括中国在内的 70 多个国家和地区开售,另有 28 个地区 10 月 30 日。美国起步价 1999 美元,256GB。
结语
折叠屏没有淘汰现有 iOS App。它淘汰的是「屏幕永远是那一个尺寸」这句假设。10 月 23 日前值得改的,是写死尺寸、按机型分支、自定义栏,以及相机、视频和内屏分栏。列表和设置跟着 27.1 SDK 走就够。验的时候用 Xcode 27.1 的 Duo 模拟器,别和日用机抢同一台 Mac。