你打开一台刚到手的 iPhone Duo,常用的 App 多半还在。它不会因为「没为折叠屏重做」就直接闪退。用 iOS 26 或更早的 SDK 编出来的包,展开后会停在内屏中间一块熟悉的手机尺寸里,四周是空的。用户把这块空叫做黑边。
布局被拉长、按钮点不中,是另一件事。那通常发生在开发者改用 iOS 27 或 27.1 的 SDK、系统开始让窗口跟着折叠变大之后。代码如果仍按一块固定屏幕来摆控件,兼容窗口拿掉,问题才露出来。
旧 App 一般打得开。黑边是系统给 iOS 26 及更早 SDK 留的兼容窗口,不是崩溃。错位和点不准,主要出现在窗口已经变大、排版却还假设「手机永远是这块尺寸、这个方向、要么是 iPhone 要么是 iPad」的时候。
下面按 2026 年 10 月 15 日能核对的材料来写。Apple 的 iPhone Duo 产品页给出屏幕和开卖日期。Prepare your app for iPhone Duo 写明三种 SDK 窗口。同题 Tech Talk 补充了主屏幕、方向和安全区。本文没有在真机上逐个打开 App Store 里的热门应用,所以说的是哪一类代码会碰到哪一种现象,不是给某个品牌判「已经坏了」。
旧 App 在 iPhone Duo 上还会打开吗?
会打开。准备页写明:所有 App 都会在 iPhone Duo 上运行。差别是窗口肯不肯跟着内屏、外屏和分屏一起变。
iPhone Duo 是苹果第一款折叠 iPhone。内屏 7.6 英寸,比 iPhone 18 Pro Max 大 50%。合上之后外屏 5.4 英寸,屏幕面积超过 iPhone 18 Pro 的 90%。内外屏宽高比一致。美国时间 2026 年 10 月 16 日凌晨 5 点开始预订,10 月 23 日开卖。这些数字来自产品页,不是来自开发者论坛的猜测。
系统按这个二进制是用哪一版 SDK 编的来选窗口,不按 App 的名字,也不按它在 iPhone 18 Pro 上好不好看。
| 编译所用 SDK | 展开后的内屏 | 文档还写了什么 |
|---|---|---|
| iOS 26 或更早 | 居中,周围留空 | 合上后,内容在状态栏和摄像头的左侧 |
| iOS 27 | 铺满大部分内屏,右侧状态栏一带仍空着 | 展开时窗口铺开,合上时回到外屏 |
| iOS 27.1 及以后 | 用到整块内屏 | 工具栏和标签栏竖排在状态栏下方;上架前要确认内容跟得上 |
表里前两列是准备页的原意。第三列里,合盖后「内容让开状态栏和摄像头」只明确写给 iOS 26 及更早的 SDK。iOS 27 及以后的句子是:展开铺满内屏,合上回到外屏。不要把三档的外屏都画成同一圈黑边。
黑边到底是谁留出来的?
黑边不是 App 自己画的一圈装饰。用 iOS 26 或更早 SDK 编的包,系统不让它去填 7.6 英寸内屏,把它放进一块它本来就认识的尺寸里。剩下的区域是空的。功能多半还在:能点的按钮仍在那块窗口里面。
合盖不是同一张图。准备页对这一档 SDK 的外屏写法是:内容出现在状态栏和摄像头的左侧。外屏更宽、更矮,产品页也说常用控件会挪到侧面,把竖向空间留给内容。你不能把内屏那圈黑边,原样说成「合上以后四周也发黑」。
最容易传错的一句是「外屏和普通 iPhone 完全一样,所以旧 App 在外面一定满屏」。Apple 写的是内容让开状态栏和摄像头。满不满、控件在不在侧面,按这一档 SDK 的说明看,不要用内屏兼容窗口去套外屏。
黑边会留到开发者换 SDK。准备页把 iOS 27 写成空的区域明显变少,把 iOS 27.1 写成用满整块屏幕。只重编译、不改布局,黑边可以消失,下一节的错位会接上来。开卖前能走完 27.1 测试再提交的团队有限,所以 10 月 23 日当天仍会看到兼容窗口。这是时间,不是某家商店的故障名单。
哪些 App 最容易看见黑边?
判断标准只有一条:这个二进制是不是还用 iOS 26 或更早的 SDK 编的。和它是不是游戏、是不是大厂无关。展开内屏时,这一档全部落在中间那块窗口里。
更常见的是长期不发版的工具:停车、门禁、内部审批、几年没动的行业 App。它们往往没有人在新 SDK 上重编。用户看到的就是黑边,列表和按钮多半还能用。
游戏要单独看。人机界面指南要求游戏在每种姿态下都尽量铺满,优先改宽高比,而不是加黑边;实在要留白,留白处应有画面。如果一款游戏在已经用新 SDK 之后仍左右或上下留黑,那是它自己的画面策略,不是系统兼容窗口。两种黑边看起来像,责任不在同一层。本文不能替某一款游戏判断它属于哪一层,那要看它商店里那一版的编译 SDK。
哪些 App 最容易布局错位?
错位几乎不会出现在还停在兼容窗口里的那一档。窗口尺寸没变,原来按手机画的界面就还对。错位出现在窗口已经跟着折叠、旋转或 Split View 变大,代码却还在用旧的尺寸假设。
准备页点名了几类写法。它们会把界面拉扯、裁切,或把控件放到看不见的地方:
- 用整块屏幕当自己的窗口。
UIScreen.main.bounds、启动时量一次尺寸、UIWindow(frame: UIScreen.main.bounds)。折叠发生在同一次使用中途,启动时的数字不会再更新。Tech Talk 还说,双屏幕设备上的 main screen 是含糊的,以后的系统会弃用它。 - 用方向决定版式。 内屏不遵守 App 声明的支持方向。拿
UIDevice的方向或interfaceOrientation去切换横竖布局,会和窗口的实际宽高对不上。 - 用「是不是 iPhone」决定版式。
userInterfaceIdiom == .phone或.pad,以及「regular 宽度就是 iPad」。内屏上的 iPhone App 可以是 regular 宽度。 - 用一份已知高度表。
bounds.height == 844这类判断对不上 Duo 的窗口。 - 铺满裁切的头图和视频。
scaleAspectFill在更宽的画面上会切掉主体。
举一个能对上文档的例子。一个备忘录 App 用 iOS 26 SDK 编,展开后居中,四周留空,按钮仍在原来的位置,能记能查。开发者改用 iOS 27.1 SDK,窗口铺满内屏,系统把标签栏竖排到状态栏下方。如果底部按钮的 Y 坐标来自启动时的屏幕高度,它会落到栏的位置上,或者落到内容区外面。输入没变,变的是窗口这一层。
最常见的张冠李戴,是看见 regular 宽度就切到「仅 iPad」的侧边栏。这段代码以前只在 iPad 上跑。iPhone Duo 的内屏也会给出 regular 宽度,侧边栏会在这台手机上出现。
哪些 App 最容易点不准,或预览反过来?
交互问题是布局问题的下一层:控件还在,但手指按到的不是它,或者镜头方向和预览相反。
锁方向的游戏和视频
内屏不理会你声明的方向。只做了横屏、按钮焊在某一边的游戏,折叠或换成另一种姿态之后,虚拟摇杆可能压进安全区,或者整块画面仍按旧比例留白。指南的建议是改宽高比并铺满。留白如果不可避免,留白处要有画面,而不是一条裸的黑边。
自己挑选镜头的相机和通话
折叠会改变镜头相对用户的朝向。自己挑选「前置 / 后置」的相机 App,要在开合时切换镜头。相机体验的 Tech Talk 要求用 AVCaptureDeviceDirectionCoordinator:外屏的协调器会把后置镜头报成朝前,内屏则会报成朝后。不用它,预览可能镜像错,或者开盖之后仍显示刚才那颗镜头。这不是黑边,是交互。
自制底栏和点击热区
系统的导航栏、工具栏、标签栏画在安全区之外,并自动避开状态栏和摄像头。自己画的底栏不会自动竖过来。外屏和横过来的内屏上,标准控件在侧面;竖着拿的内屏才有足够高度保留横条。安全区经常不对称,分屏时竖排按钮可以出现在左侧。点击热区如果按「底栏永远在下方、左右对称」来算,就会点空。
这和 iPad 上的 iPhone 兼容模式是一回事吗?
不是。iPad 上那个被放大的 iPhone 窗口,回答的是「这个包没有 iPad 界面」。iPhone Duo 的三档窗口,回答的是「这个包用哪一版 SDK 编译」。两套规则可以同时存在于一个工程里,但不能互相代替。
还有一个职责不同:iPad 兼容模式通常不会在同一次使用中途,因为用户把设备折了一下就改窗口大小。Duo 会。所以在 viewIsAppearing 里量一次就够的写法,在这里不够。尺寸要在 layoutSubviews、viewDidLayoutSubviews,或尺寸将要变化的回调里重读。SwiftUI 用 GeometryReader 或 onGeometryChange。缩放用 traitCollection.displayScale,不要用 UIScreen.main.scale。窗口用 UIWindow(windowScene:),不要存一个 UIScreen。
团队如果去年为秋季新机改过测试计划,那份计划回答的是「新机到之前,回归放在哪一条流水线」。Duo 的窗口问题要加一条:同一条用例要在合盖、展开、旋转和 Split View 各看一次,而不是只在一块固定分辨率的模拟器上截图。可以对照 发布前要不要为 iPhone 18 改测试计划 里那条稳定通道和测试通道的分法,把 Duo 放进测试通道,而不是把整条发版回归停掉。模拟器要装在带 Xcode 27.1 的 Mac 上,环境怎么分成本机和另一台机器,见 macOS 27 测试环境怎么搭。窗口规则本身不取决于你租不租一台 Mac。
哪一件事这篇不能代答?
某个具体 App 今天开不开黑边,必须看它商店里那一版是用什么 SDK 编的,或者在 Xcode 27.1 的 iPhone Duo 模拟器里打开。准备页还提到另外两种试法:Device Hub 里的可调整尺寸模拟器,以及 macOS 27 上把 iPhone 镜像窗口拉到极端宽高。文档写明,Duo 模拟器才是看完整原生体验的办法。本文没有替任何一款上架 App 做这件事。
合页折痕会不会挡住某一像素、某款游戏的留白是不是故意的、外屏侧栏会不会挡住自制手势,都要在对应姿态里看。文档能告诉你该怀疑哪一层,不能告诉你那一层在你的包里是否已经改过。
所以,旧 App 会坏到什么程度?
用 iOS 26 或更早 SDK 编的 App 会运行。展开后的典型现象是内屏黑边,不是闪退。合上后,内容让开状态栏和摄像头,不要把它说成和内屏同一圈黑边。
最容易黑边的,是还没换 SDK 的包,尤其是久不更新的工具。最容易错位的,是换了 iOS 27 或 27.1、却仍用屏幕单例、固定高度、方向或「iPhone / iPad」来排版的界面。最容易点不准的,是锁方向的游戏、自己管镜头朝向的相机,以及自制底栏。
标准导航栏和标签栏会跟着系统走。自己算坐标的那一层不会。要确认某一款 App,打开 Duo 模拟器或真机看这一版二进制。它在 iPhone 18 Pro 上正常,不能推断折叠之后也正常。