WWDC25

2025 年 7 月 1 日

iOS 26 視覺革命:深度解析 UIKit 與 Liquid Glass 的開發實踐

已複製到剪貼板


打破數位與現實的邊界

在 iOS 26 中,Apple 推出的「Liquid Glass 液態玻璃」設計系統,標誌著行動介面從「平面圖層」向「深度材質」的根本轉型。這不僅是一次視覺上的美化,更是一套關於「觸覺沉浸感」的技術架構。Liquid Glass 的核心在於其半透明、動態且具備生物性的質地——它不再是死板的背景,而是一層隨時準備與使用者互動的智慧介質。

WWDC 2025:Build a UIKit app with the new design
WWDC 2025:Build a UIKit app with the new design

作為開發者,我們最關心的往往是效能與實作成本。Apple 在此展現了極高的戰略智慧:透過最新的 SDK 進行重新編譯(Recompile),現有的 UIKit 元件將自動獲得 Liquid Glass 的基本外觀。這是一個強大的「安全網」,讓開發者能在大後方穩健更新的同時,騰出雙手去磨練那些真正定義 App 靈魂的自定義互動體驗。

接下來,我們將跳過表面的修飾,直接進入底層,剖析這場視覺革命的實踐指南。

懸浮導覽的進化:Tab View 與實戰優化

在 iOS 26 中,UITabBarController 徹底擺脫了螢幕底部的束縛。標籤列現在以懸浮姿態存在,成為 App 的導航中樞。

最小化行為與空間彈性

懸浮 Tab Bar 支援最小化行為,這對大螢幕內容的沈浸感至關重要。透過設定 tabBarMinimizeBehavior.onScrollDown,標籤列會在使用者探索內容時自動收縮。

進階實作:UITabAccessory

對於像音樂 App 這樣需要迷你播放器的場景,UITabAccessory 是核心工具。

  • 技術細節:當 Tab Bar 最小化時,bottomAccessory 會自動向下平移並與標籤列「Inline」併排
  • 資深開發者建議:空間變小時,開發者必須監聽 tabAccessoryEnvironment trait。這不僅是視覺調整,更是功能取捨
Tab Bar 動態行為:顯示 iPhone 上的懸浮 Tab Bar 在向下捲動時收縮成膠囊狀,且側邊的 Mini Player 自動適應空間、隱藏次要控制項的對比截圖
WWDC 2025|Build a UIKit app with the new design:Tab Bar 動態行為
// 實作 Tab Bar 最小化與 Accessory 監聽
let tabBarController = UITabBarController()
tabBarController.tabBarMinimizeBehavior = .onScrollDown

let accessory = UITabAccessory(contentView: miniPlayerView)
tabBarController.bottomAccessory = accessory

// 根據環境調整 Accessory 內容
self.registerForTraitChanges([UITabAccessoryEnvironment.self]) { (self, previousTrait) in
    let isInline = self.traitCollection.tabAccessoryEnvironment == .inline
    self.miniPlayerView.updateForCondensedSpace(isInline)
}

背景延伸技術:UIBackgroundExtensionView 的視覺魔術

在 iPadOS 上,側邊欄(Sidebar)與內容區的視覺斷層一直是設計痛點。iOS 26 透過 UIBackgroundExtensionView 實現了「內容無縫填充」,這正是「視覺連續性」的完美體現。

讓內容「呼吸」

以 TV App 為例,海報影像現在會越過邊界,延伸至側邊欄與導覽列下方。這種效果讓 UI 顯得輕盈,彷彿側邊欄真的懸浮在藝術作品之上。

  • 開發原則:側邊欄下方應填充「充滿活力 Vibrant」的內容
  • 佈局策略:標題或描述文字應作為 ExtensionView 的 Sibling(同級視圖)而非 Subview,以防止文字跟著背景一起被「特殊處理」
背景延伸效果:描繪 iPad TV App 畫面,左側 Sidebar 下方透出清晰的海報藝術圖案,並與舊版實色 Sidebar 進行對照,強調 leading edge 的延伸效果
WWDC 2025|Build a UIKit app with the new design:背景延伸效果
// 配置 UIBackgroundExtensionView 實現無縫背景
let extensionView = UIBackgroundExtensionView()
extensionView.contentView = posterImageView
extensionView.automaticallyPlacesContentView = false // 手動精確控制

// 關鍵:將內容 Leading 對齊 extensionView 的安全區域,確保延伸至側邊欄底
posterImageView.leadingAnchor.constraint(equalTo: extensionView.safeAreaLayoutGuide.leadingAnchor).isActive = true
posterImageView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true

玻璃化工具列與邊緣效應

Liquid Glass 將透明度提升為系統預設值。這意味著我們必須捨棄舊有的背景自定義(如 UIBarAppearance 或自訂 backgroundColor),否則會完全破壞玻璃質感。

自動分組與 Subtitle API

UINavigationItem 現在更具層次感。系統會自動將圖像按鈕分組,而文字按鈕(如「Done」)則獨立存在。此外,新增的 subtitle API 與 largeSubtitleView 屬性,讓開發者能在 Large Title 下方放置互動式元件(如郵件過濾按鈕)。

強化邊緣 Hard Edge

對於元素密集、充滿懸浮物件的複雜 UI,ScrollEdgeElementContainerInteraction 提供了 .hard 風格。這能為邊緣提供類似 iOS 18 的清晰邊界,確保捲動時的易讀性。

導覽列分組細節:顯示導覽列中「Select」文字按鈕、中間四個圖示按鈕組、以及獨立的「Done」按鈕,展示它們各自擁有獨立的玻璃背景塊
WWDC 2025|Build a UIKit app with the new design:導覽列分組細節
// 為自定義懸浮容器添加「硬邊緣」效應
let interaction = ScrollEdgeElementContainerInteraction(for: .bottom, with: contentScrollView)
interaction.style = .hard // 適用於密集 UI
buttonsContainerView.addInteraction(interaction)

整合式搜尋體驗:Search 的新位置

搜尋功能在 iOS 26 中經歷了顯著的重構。搜尋框不再固定在頂部,而是轉向更易觸及的位置。

  • iPhone 端:搜尋框自動移動至底部的工具列(Toolbar)。若已有工具列,請使用 searchBarPlacementBarButtonItem 來精確定位
  • iPad 端:支援 searchBarPlacementAllowsExternalIntegration,讓搜尋框整合進導覽列的末端,遵循 macOS 的高效模式
  • 搜尋標籤:UITabBarController 現在可以包含一個專門的「搜尋標籤」,點擊後會自動擴展成搜尋欄位

流體轉場:全互動式縮放

Liquid Glass 的靈魂在於其物理動力學。iOS 26 引入了「隨時可中斷」的轉場模型,讓使用者能在動畫進行到一半時立即介入。

Zoom Transition 的統一化

無論是選單、彈出視窗還是 Sheet,現在都支援 .zoom 轉換。當從玻璃按鈕發起請求時,按鈕會「形變 Morph」為呈現的視窗。

  • 關鍵更新:在 iPhone 上,Action Sheets 現在也像 iPad 一樣懸浮在源元件上方
  • 開發必備:必須設定 sourceItemsourceView,否則系統無法計算 Morph 動畫的起點,會退回到傳統的居中顯示
// 設定 Action Sheet 的玻璃形變轉場
let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
// 必須指定 sourceItem 才能觸發 Liquid Glass 動畫
actionSheet.popoverPresentationController?.sourceItem = self.shareButton
present(actionSheet, animated: true)

微互動的藝術:Slider 與按鈕

微小的控制項決定了 App 的精緻度。

  • UIButton:新增 .glass().prominentGlass() 配置
  • UISlider:具備「動量與伸展 Momentum and Stretch」效果。透過 TrackConfiguration 支援刻度(Tick Marks)與中性值(Neutral Value)填充。此外,.thumbless 樣式則是影音播放進度條的首選,減少視覺干擾

開發者進階:建構自定義 Liquid Glass 元素

當系統元件無法滿足需求時,UIGlassEffect 是你的終極武器。

核心原則:單一懸浮層 Single Floating Layer

設計 Liquid Glass 時應遵循「單一懸浮層」原則:避免玻璃元素相互重疊,以免破壞那種「懸浮在內容之上」的物理錯覺。

API 深度解讀

  1. Materialize 動畫:顯示或隱藏玻璃時,應設定 effect = nil 或賦值,而非調整 alpha。這會觸發系統專有的「材質化」動畫
  2. Concentricity 向心性:使用 .containerRelative 設定圓角,元件會根據與容器邊緣的距離自動調整半徑,維持視覺上的和諧
  3. Merging 動態融合:使用 UIGlassContainerEffect 並調整 spacing。當兩個玻璃視圖靠近時,它們會像水滴一樣融合在一起

Liquid Glass 融合效果

Liquid Glass 融合效果:展示兩個玻璃按鈕在靠近時邊緣產生黏著感,最終融合為一個單一流體形狀的動態過程
WWDC 2025|Build a UIKit app with the new design:Liquid Glass 融合效果
// 實作自定義玻璃融合容器
let containerEffect = UIGlassContainerEffect()
containerEffect.spacing = 15.0 // 定義融合靈敏度
let glassContainer = UIVisualEffectView(effect: containerEffect)

// 啟用互動回饋:點擊時自動縮放與彈跳
let glassEffect = UIGlassEffect()
glassEffect.isInteractive = true
customView.effect = glassEffect

定義未來的視覺語言

Liquid Glass 不僅是視覺上的「通透」,更是互動上的「通暢」。它透過物理慣性與材質感,減少了使用者在操作數位介面時的認知負擔。

對開發者而言,這是一個檢視設計意圖(Design Intent)的最佳時機。我們不應在 App 中到處堆疊玻璃,而應將這種昂貴的視覺資源保留給最重要的互動層。

最後的思考

在你的 App 中,哪一個核心互動最適合轉化為 Liquid Glass 懸浮層,以重新定義使用者的觸覺感受?現在就開始實作,擁抱這個觸手可及的未來。

分享文章

已複製到剪貼板

主題文章

查看 WWDC25

超級感謝

關於 XcodeProject

XcodeProject 創立於 2023,致力於協助開發者探索 Apple 的創新世界,學習在 iOS、iPadOS、macOS、tvOS、visionOS 與 watchOS 上開發 App,發現眾多技術與框架,讓開發者獲得更多能力。


Contacts

Ricky Chuang

XcodeProject

RickyChuang.xcodeproj@gmail.com

XcodeProject 聯絡

contact.xcodeproj@gmail.com

XcodeProject 的最新文章