Apple 在 2026 年 9 月正式對開發者社群揭露了摺疊式 iPhone Duo 的相關細節。這款裝置與過去任何一款 iPhone 最大的不同,在於它同時具備外側螢幕、展開後的內側大螢幕,以及介於兩者之間的部分摺疊狀態。對 iOS 開發者來說,這不是單純多了一支需要相容的手機,而是 app 的版面配置邏輯必須重新思考。過去幾年,iPhone 的螢幕尺寸雖然持續變化,但基本上都維持在單一平面、固定方向的框架內;iPhone Duo 則引入了多種實體姿態,每一種姿態下可用的螢幕區域、系統介面位置,甚至相機行為都不一樣。InfoQ 報導了 Apple 在這次公告中提供給開發者的技術指引,內容涵蓋 Xcode 版本要求、版面配置原則、工具列與導覽列的調整方式,以及全新的系統保留區域概念。
摺疊型態與螢幕適配
Apple 明確表示,若要讓 app 在 iPhone Duo 上充分利用所有可用的螢幕空間,開發者必須使用 Xcode 27.1 或更新版本進行建置。使用舊版 Xcode 編譯出來的 app,不會自動延伸到狀態列與相機區域下方,這意味著畫面上下兩端會出現未使用的空白地帶,視覺上就像 app 被縮限在一個較小的框架內。此外,由於 iPhone Duo 支援多種螢幕尺寸、版面方向與裝置姿態,app 必須在闔上、展開、部分摺疊這幾種狀態下都能正常運作。開發者需要實際測試 app 在兩個螢幕上的呈現效果,並且在每一種姿態下旋轉裝置,觀察版面是否會產生預期外的裁切或重疊。
為了達成這個目標,Apple 建議開發者放棄過去依賴固定螢幕尺寸的做法。像是 UIScreen.main.bounds 這類直接讀取螢幕寬高的寫法,在摺疊裝置上會因為螢幕狀態改變而回傳不同數值,很容易造成版面錯亂。正確的方式是讓 view 的尺寸相對於它的容器來決定,而不是相對於整個螢幕。Apple 推薦使用標準的版面容器,包括 SwiftUI 的 stack、navigation view、split view、標準 tab bar,以及 UIKit 的 Auto Layout。這些容器本身具備回應環境變化的能力,當裝置從外螢幕切換到內螢幕,或進入部分摺疊且相機遮蔽畫面的狀態時,內部的 view 會自動調整大小與位置。
另一個重要的原則是,不要以 userInterfaceIdiom 或 UIInterfaceOrientation 作為版面判斷的依據。過去開發者常透過這兩個屬性來區分 iPhone 與 iPad,或判斷目前是直向還是橫向,但摺疊裝置打破了這些分類的界線。Apple 建議改用 size classes,也就是觀察 horizontalSizeClass 與 verticalSizeClass 的變化來調整 UI。這種做法讓 app 不需要知道裝置的具體型號或實體方向,只要根據目前可用的空間類型來決定版面,適應力會強得多。
工具列、導覽列與系統保留區域
iPhone Duo 在 UI 上一個很明顯的改變,是工具列與導覽列的位置不再固定。在某些摺疊姿態下,工具列可能會垂直顯示在螢幕側邊,而不是傳統的水平排列在頂部或底部。Apple 警告,使用 UIToolbar、UINavigationBar 或 UITabBar 自行建立導覽或工具列的 app,可能無法在這些情況下正確適應。為了解決這個問題,Apple 建議開發者改用標準的導覽與工具列 API:在 SwiftUI 中,將 toolbar(content:) modifier 加到 NavigationStack 或 NavigationSplitView 上;在 UIKit 中,則是將工具列項目設定在加入 navigation controller 的 view controller 上。透過這些標準 API,系統才能在不同姿態下自動重新安排工具列的位置與方向。
iPhone Duo 還引入了一個全新的概念:reserved regions,也就是系統保留區域。這些區域對應兩類位置,一是螢幕摺疊處將顯示區域分割而成的界線,二是硬體元件(例如內螢幕的前置相機)遮蔽 app 內容的區塊。框架提供的 view 與容器會自動避開這些區域,但開發者自行繪製或自訂的 view 就必須主動查詢這些區域的位置,才能確保內容不會被摺痕或相機鏡頭擋住。SwiftUI 開發者可以使用 reservedRegions(kind:options:layoutDirectionBehavior:) 這個方法取得相關資訊,UIKit 開發者則使用 reservedRegions(kind:options:)。Apple 特別提醒,內螢幕的前置相機在啟用時會遮擋 view,而外螢幕的前置相機則是隨時都會遮擋內容,因此這兩個位置的處理方式並不相同。
相機行為與開發者反應
iPhone Duo 的相機系統也是開發者需要留意的重點。這款裝置可以從外螢幕相機、內螢幕相機與後置相機三個來源拍攝照片與影片,但裝置的開合與旋轉會改變目前啟用的相機。例如,使用者闔上裝置時,外螢幕相機成為主要拍攝工具;展開後,內螢幕相機或後置相機可能接管。開發者可以根據相機面對的方向來選擇適合的相機,但這也代表 app 在拍攝過程中必須隨時監測裝置狀態的變化,否則可能出現畫面來源突然切換的狀況。
這項公告在開發者社群中引起了不小的討論。知名 iOS 開發者 Steve Troughton-Smith 在 Mastodon 上直言,這感覺像是一個全新平台突然降臨,而且只給開發者大約一個月的準備時間。另一位使用者 David 也回應,他很好奇接下來幾個月有多少 app 會真正願意支援 iPhone Duo。iOS Dev Weekly 編輯 Juan Marin 則從歷史角度提出觀察:漂亮的裝置總是伴隨著功課而來,而這些功課通常是開發者要做的。他指出,過去每一次 iPhone 的重大變革,Apple 都提前數年告訴開發者該如何準備,但多數人總是等到裝置真正上市後才開始行動。不過他也承認,長久以來被視為潛在問題的 UIScreen.main.bounds 用法,確實是一個等待裝置出現的 bug,而現在這個裝置終於出現了。
整體而言,iPhone Duo 的出現標誌著 iOS 開發從單一固定螢幕走向多型態裝置的轉折點。Apple 提供的技術指引相當明確:擁抱標準容器、依賴 size classes、使用系統提供的導覽與工具列 API、主動處理保留區域,以及重新思考相機切換邏輯。這些調整雖然需要花費時間與心力,但對於沒有及早準備的開發者來說,iPhone Duo 上市後的相容性問題恐怕會比想像中更棘手。畢竟,摺疊裝置不只是螢幕變大,而是從根本改變了 app 與硬體互動的方式。
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。