Apple Developer onepage / WWDC26
#WWDC26#UIKit#iPhoneMirroring#Xcode27

UIKit 現代化:不要再把 iPhone app 當成固定尺寸畫布

這支 WWDC26 short 指向完整 session「Modernize your UIKit app」:iOS 27 讓 iPhone app 在 iPad 與 iPhone Mirroring on Mac 中完整可縮放,舊的 main screen、orientation、idiom 假設都要被重寫。

一句話結論

UIKit app 的新門檻是 scene-aware、size-aware、content-aware:layout 要看可用空間,不看裝置名;Siri / Apple Intelligence 也要能從畫面與拖放資料取得語意上下文。

Apple Developer · WWDC26 · Video ID: Wy1taehbH_s完整 session:Modernize your UIKit app
Content map

影片在拆的四個現代化問題

Resizable app

iPhone-only app 也會被自由縮放

iPhone Mirroring on Mac 與 iPad 上的 iPhone app 都會面對動態 scene size。Universal binary 只是起點,真正要修的是 runtime adaptivity。

Legacy assumptions

main screen、idiom、orientation 都不可靠

UIScreen.main、screen bounds、userInterfaceIdiom、interface orientation 不應再驅動 layout。可用空間要從 scene、trait、view 或 superview 取得。

System bars

tab、sidebar、navigation bar 變成空間策略

iOS 27 讓 iPhone app 可 opt in sidebar,navigation bar 可互動式最小化;過去覆寫 scroll edge 或 menu image 的設計都要重看。

Apple Intelligence

UI 元件需要能被 Siri 理解

context menu 的 Ask Siri 入口、View Annotations API、drag delegate resource loading,讓 UIKit view 不只呈現內容,也要暴露語意與可操作資料。

Migration path

建議的導入路線

1

先確認 UIScene lifecycle

用最新 SDK 建置時,UIScene lifecycle 已是 adaptive app 的基礎;尚未遷移的 app 會先卡在啟動與 scene 管理。

2

移除 main screen 與 screen bounds 依賴

displayScale 改用 traitCollection.displayScale;可用空間改看 window scene effective geometry、view 或 superview size。

3

把 idiom / orientation 判斷改成 size classes

iPhone app 在 Mac mirroring 可能仍是 phone idiom,但視窗大小已不同。orientation 在 resizable environment 也只是偏好,不應決定 layout。

4

用 Device Hub 與 Xcode Previews 測尺寸矩陣

Xcode 27 的 Device Hub resize mode 能快速檢查多尺寸;最後仍要在真機 iPad 與 iPhone Mirroring on macOS 27 驗證。

5

再處理 bars、menus 與 Siri context

tab/sidebar、navigation minimization、menu images、View Annotations、drag delegate 都會影響新系統外觀與 Apple Intelligence 可理解性。

實務啟發:layout 的真相來源要往 scene 與 view 靠攏

完整 session 明確指出,iPhone Mirroring、iPad 上的 iPhone app、external display 都讓「螢幕」不再等於「你的 app 可用空間」。如果程式碼還用 main screen scale、main screen bounds 或 interface orientation 推導版面,會在可縮放環境中得到錯誤結果。

可落地的檢查方式:全 repo 搜尋 UIScreen.main、bounds、userInterfaceIdiom、interfaceOrientation,逐一確認它們是業務邏輯、裝置能力判斷,還是其實在做 layout shortcut。

API / framework 重點

Automatic trait tracking

layoutSubviews、updateProperties、drawRect 等常見 override 會追蹤使用到的 trait,trait 變動時系統能重新呼叫。

registerForTraitChanges

不適用 automatic tracking 的地方,用指定 trait observer 來 invalid cache 或更新衍生狀態。

UIRequiresFullscreen

iOS 27 在可縮放環境中仍尊重它,但語意變成 discrete resizing,而不是完全退出 resizing。

View Annotations API

把 AppEntities 註記到特定 view,讓 Siri 與 Apple Intelligence 更精準理解螢幕上的 app content。

風險與遷移注意事項

不要把 phone idiom 當小畫面

iPhone app 在 iPad 或 Mac mirroring 仍可能回報 phone idiom;layout 應依 size class 與可用尺寸。

orientation 只剩偏好語意

可縮放環境可忽略 supported interface orientations;用 orientation 推導 row/column 或 canvas aspect 都會出問題。

drag delegate 可能被 Siri 觸發

Apple Intelligence 載入 drag resources 時可能沒有使用者手勢;不要在 sessionWillBegin 做動畫或 modal presentation。

agentic modernization 仍需人工 review

Xcode 27 app modernization skill 可轉換 main screen、orientation、scene lifecycle,但大型任務仍會留下 TODO 與需要產品判斷的 layout 決策。

來源

主要來源為 Apple Developer YouTube short、Apple Developer 官方完整 session「Modernize your UIKit app」與其 transcript / chapters。YouTube:Make your UIKit app fully resizable。官方頁:Modernize your UIKit app - WWDC26。

TL;DR