WWDC25 Build a UIKit app with the new design

更新於 發佈於 閱讀時間約 15 分鐘
New Zealand — Deer Park Heights Queenstown

New Zealand — Deer Park Heights Queenstown

Tab views and split views


UITabBarController, UISplitViewController 有更新 Liquid Glass 外觀

UITabBarController

minimize tab bar on scroll

raw-image

tabBarController.tabBarMinimizeBehavior = .onScrollDown

再更進階的做法還有這個範例, UITabAccessory

raw-image

對於這個細節 UIKit: Automatic trait tracking 以及 updateProperties() ,可以前往 WWDC25 - What’s new in UIKit來查看更多細節

簡單介紹一下 Update Properties

  • UIViewController 與 UIView 都有新增一個方法 updateProperties() ,用於更新 UI
  • 它是輕量級的 UI 更新方式,不會觸發完整的 layout 過程,所以 layoutSubviews() 和 viewWillLayoutSubviews() 不會觸發。常見情境如下:
    • 更改 tab bar 或 badge 等 UI 內容
    • 顯示或隱藏某個小 UI 元件
    • 無需移動或者調整 View 大小
  • 可以透過 call setNeedsUpdateProperties() 來手動觸發更新
  • 可以自動追蹤 @Observable Object

Tab bar and sidebar

iPad 上的 tab bar 以及 sidebar 都也有 Liquid Glass,使用 UITabBarController 它們可以懸浮在 App 上方

raw-image
raw-image

使用 UITab 及 UITabGroup ,app 就可以自動適應,在 iPad 上切換 tab bar 或 sidebar 非常容易

更多細節可以查看

WWDC24 Elevate your tab and sidebar experience in iPadOS (Doc)

WWDC25 Make your UIKit app more flexible

UIBackgroundExtensionView

raw-image
raw-image


Navigation and toolbars


raw-image

Default grouping

navigation bar 和 toolbar 的按鈕系統會自動分組,每個 group 共享一種玻璃背景

raw-image

Shared glass backgrounds for:

  • Image buttons
  • Bar button item groups with multiple items

Separate glass backgrounds for:

  • Text buttons
  • SystemItem.done and SystemItem.close
  • Style.prominent buttons

假如不想要被系統自動決定 group,可以使用 .fixedSpace(0) 來獨立

raw-image

假如不想用 native 的玻璃色,也可以直接指定 tintColor

raw-image

假如連背景都想要客製化,可以調整 style = .prominent

raw-image

假如有個需求是要把所有的按鈕都均分開來,通常會用 flexibleSpace ,但在 Liquid Glass 默認情況下遇到 flexibleSpace 會讓他們從 group,單獨出來

raw-image

但假如我們還是想要有 Liquid Glass 背景,而且要讓他們是一個 group 的話,可以用

flexibleSpace.hidesSharedBackground = false

raw-image

Title area updates

這次 iOS 26 UINavigationBar ,在標題和大標題區域有更多客製化了

Subtitle:新增副標題

Attributed strings:可以對標題跟副標題更多客製化調整

Custom views:可以指定 custom view 增加互動式元件,例如 Button

Large title in scroll views

在這範例中可以看到一些新設計

  • Serach bar 被放在底下的 toolbar 裡
  • 使用新的 subtitle

raw-image

也可以 custom view,例如 largeSubtitleView

raw-image

Review bar customizations

默認情況現在 navigation bar or toolbar 都是透明的

假如想使用 native 的 Liquid Glass 要刪除任何背景 custom 設置

Backgrounds

  • UIBarAppearance
  • backgroundColor

Custom view items (例如 Toolbars,以下這些都會影響 liquid glass)

  • Backgrounds
  • Spacing

Edge Effect

raw-image

這個新的 Edge Effect 並非只限於系統工具欄使用,可以自行搭配使用,覆蓋 scroll view 的邊緣

raw-image

像這個例子是上邊緣 UI 元件太多太雜了,已經不適合使用 Edge Effect,這時候可以直接使用 .hard ,這樣幾乎看不到背景了,就不會太雜亂

raw-image

Push and pop transitions

raw-image

有更多的 push and pop 的過渡客製化

Interruptible in iOS 26

Touches are always enabled during transitions

細節可參考

WWDC 24 Enhance your UI animations and transitions

Content backswipe

  • Entire content area can be used for the backswipe 終於不是在左邊邊緣才可以執行返回操作,IG 很早就有做這功能了,很方便
  • Works in areas with no other interactions 這 backswipe 會自動檢查是否存在其他有衝突的交互操作,例如 table view cell 的 swipe,就無法返回

raw-image

  • New interactiveContentPopGestureRecognizer to set up failure requirements 假如要讓自定義手勢優先於 content backswipe 的操作,就需要用到這個 interactiveContentPopGestureRecognizer



Presentations


raw-image

Menus 會自動有這效果,假如彈出窗口來自 toolbars 也會呈現這新動畫

raw-image

也可以把這個縮放過渡效果用在表單,present 某個 viewController,就在那個 viewController 加上 preferredTransition = .zoom,如下圖

raw-image
raw-image

在 iOS 26 還有一個 present 的過渡效果,但一樣要刪除任何自訂義的背景

raw-image

之前在 iPad 上操作 alert,有些都會直接在那顆按鈕的旁邊跳出選單,現在 iOS 也會,所以需要在 alertController 上設置 popoverPresentationController.sourceItem or sourceView ,這樣才會有這新的過渡效果

640

640

raw-image

Inline alerts and action sheets

  • No cancel button, tap outside to dismiss 剛剛上述的這種操作表單 (action sheets) ,點擊外面的任何地方就會取消,所以不用 cancel button,
  • If the source is not set, alert appears centered and has a cancel button 假如沒指定 source,那麼這個 action sheets 會置中,而且還會有 cancel button



Search


現在 search bar 很多都會從上面自動移動到底下,並使用 toolbar,這樣的目的是更輕鬆使用搜尋功能

raw-image

假如你原本就有 toolbar 在底下,可以直接用 searchBarPlacementBarButtonItem

raw-image

Toolbar search

在 iPad 上的搜尋與 macOS toolbar 同樣的方式,將 search bar 放置在 navigation bar 的後置邊緣,假如要啟用這功能就用 searchBarPlacementAllowsExternalIntegration = true

raw-image

Search as a tab

Displayed within the tab bar

假如搜尋功能常常需要被用到,可以考慮把 search bar 放在 tab bar 上,讓他在切換 tab 後,一樣可以馬上搜尋,但記得直接使用 UITabBarController ,這樣畫面就可以獨立顯示一個 search 的 tab,點擊之後可以先放一些常用的結果或提示,如下圖,鍵盤還沒有升起。

raw-image

假如想要在點擊 search tab 時,自動啟用輸入文字搜尋,可以設定 automaticallyActivesSearch = true

raw-image
raw-image

Search as a dedicated view

也可以考慮把 search bar 放在 side bar or tab bar 中

假如設定 preferredSearchBarPlacement = .integratedCentered 把 search bar 放在置中,當 tab bar 又出現時,他就會自動置中

raw-image
raw-image



Controls


raw-image

Switch

記得要檢查 layout,因為 size 跟以前不一樣,在交互時,會自動有 Liquid Glass 的效果

raw-image

Buttons

除了普通按鈕,還有另外兩種 glass 質感外觀可以設定

.glass() 就是常規,用 .prominentGlass() 是可以設定自己色調的

raw-image

Sliders

raw-image

在 iOS 26 上還支援刻度,可以透過 trackConfiguration 設定

raw-image

也可以把 thumb 拿掉,很適合放媒體播放用

raw-image



Custom elements


raw-image

要記住 Liquid Glass 的設計理念,它跟 UIBlurEffect 很像,但使用場景不一樣

Liquid Glass 的設計用為互動層,它會懸浮在內容上方,給人一種觸手可及的感覺,還提供用戶可操作的控制元件

例如 Map app,這些按鈕懸浮在地圖上方,它們是獨特的控制層,呈現效果很自然,因此這場景使用是很好的選擇

raw-image

還有當 sheet 在展開時,那些按鈕就會消失,這是要防止玻璃元素之間的重疊,並保持單層玻璃懸浮效果的視覺完整性

raw-image

假如想要把玻璃質感應用在自己客制的 View,可使用 UIVisualEffectView + UIGlassEffect

raw-image

預設情況玻璃是膠囊形狀的,假如想自定義形狀,可用 cornerConfiguration API

raw-image

也支援 dark mode

raw-image

也可以將玻璃質感新增到現有的玻璃 container 中,一層包一層,它會自動適應外觀

raw-image
raw-image

尺寸越大越不透明,越小就越透明,而且也自動支援 light/dark mode

raw-image
raw-image

也可以自行新增 label 或 image 等內容,一樣支援 dark mode,會根據背景調整顏色

raw-image
raw-image

顏色的部分也可在客製化 tintColor 和 label 上的 textColor = .label

raw-image

也可以客製化 glass 顏色

raw-image

假如想讓 glass,像 Button 一樣,有些交互動畫,可使用 isInteractive = true

raw-image
833

833

最後假如不需要使用 glass 時,要將它隱藏,直接用 effect = nil ,記得不要調整 alpha 而隱藏,這樣才能確保以合適的動畫效果顯示或隱藏

raw-image
842

842

剛剛上述的範例,都只有一個 view,假如有多個交互時,玻璃效果會有額外的內置行為,Liquid Glass 可以無縫融合不同的形狀

要動態合併 glass,可以使用 UIGlassContainerEffect 配置 UIVisualEffectView ,假如有空間的話,他們還是會獨立呈現,只有相互靠近才會合併

raw-image

可控制他們之間的間距

raw-image
raw-image
raw-image
864

864

raw-image
866

866

UIGlassContainerEffect

  • Enables animations between glass elements
  • Uniform adaptation

當然 UIGlassContainerEffect 不是只有加一些動畫效果,它還有強制執行統一的適應,玻璃會動態適應背景,但依舊保持一致的外觀

Next steps


  • Build your app with Xcode 26 這樣就可以看到很多新設計的內容,在 app 的呈現
  • Start with standard UI 如果有客製化元件,請判斷是不是用 native 更合適
  • Consider your custom use cases

Resources


留言
avatar-img
留言分享你的想法!
avatar-img
CHENGYANG的沙龍
0會員
17內容數
CHENGYANG的沙龍的其他內容
2025/06/24
Building blocks 先了解核心概念 Common workflows 討論幾種常見的工作流程,包括自定義測試或使用不同參數重複測試的方法。 Swift Testing and XCTest 介紹 Swift Testing 和 XCTest 之間的相互關係 Open sour
Thumbnail
2025/06/24
Building blocks 先了解核心概念 Common workflows 討論幾種常見的工作流程,包括自定義測試或使用不同參數重複測試的方法。 Swift Testing and XCTest 介紹 Swift Testing 和 XCTest 之間的相互關係 Open sour
Thumbnail
2025/06/24
一開始拿了一個 WWDC21 年的 demo 來敘述資料競爭的潛在問題,因為這 app 有三個 concurrent queue 在執行(Main queue, Background queue and Arbitrary queue),他們會交錯使用,很容就產生 data races。 我們
Thumbnail
2025/06/24
一開始拿了一個 WWDC21 年的 demo 來敘述資料競爭的潛在問題,因為這 app 有三個 concurrent queue 在執行(Main queue, Background queue and Arbitrary queue),他們會交錯使用,很容就產生 data races。 我們
Thumbnail
2025/06/17
Swift over the years 因為從 Swift 2 到 Swift 3,因為 Xcode 的關係,導致用戶一定要被迫升級 Swift 3,而且那次是大改版很難升級,但到 Swift 4 之後,Apple 團隊之後的解法是讓 Compiler 可以支持多種版本,不用
Thumbnail
2025/06/17
Swift over the years 因為從 Swift 2 到 Swift 3,因為 Xcode 的關係,導致用戶一定要被迫升級 Swift 3,而且那次是大改版很難升級,但到 Swift 4 之後,Apple 團隊之後的解法是讓 Compiler 可以支持多種版本,不用
Thumbnail
看更多
你可能也想看
Thumbnail
本文探討2024年UI/UX設計趨勢,包括深色模式和色彩適應性、微互動和動畫、3D元素與虛擬現實整合,以及以用戶為中心的數據驅動設計、無障礙設計和情感設計的新方法。
Thumbnail
本文探討2024年UI/UX設計趨勢,包括深色模式和色彩適應性、微互動和動畫、3D元素與虛擬現實整合,以及以用戶為中心的數據驅動設計、無障礙設計和情感設計的新方法。
Thumbnail
這篇文章探討瞭如何在iOS應用程式中客製化Alert,包括改變字體大小、內嵌連結以及讓Alert的高度隨著字數增長並提供scroll操作。同時使用SwiftUI進行客製化,並介紹瞭解決高度超出範圍後文字捲動與scrollView固定高度的方法。
Thumbnail
這篇文章探討瞭如何在iOS應用程式中客製化Alert,包括改變字體大小、內嵌連結以及讓Alert的高度隨著字數增長並提供scroll操作。同時使用SwiftUI進行客製化,並介紹瞭解決高度超出範圍後文字捲動與scrollView固定高度的方法。
Thumbnail
本文介紹瞭如何在SwiftUI中調整元件的對齊方式,包括置中、向左/向右/向上/向下對齊的方法。透過調整HStack、VStack以及frame的maxWidth、maxHeight和alignment屬性,可以達到想要的對齊效果。
Thumbnail
本文介紹瞭如何在SwiftUI中調整元件的對齊方式,包括置中、向左/向右/向上/向下對齊的方法。透過調整HStack、VStack以及frame的maxWidth、maxHeight和alignment屬性,可以達到想要的對齊效果。
Thumbnail
本文介紹如何使用UINavigationBarAppearance調整四種場景下的UI外觀,並探討客製化返回鍵UI又保留返回手勢的做法,可以有效地客製化NavigationBar的外觀,並避免一些NG作法。
Thumbnail
本文介紹如何使用UINavigationBarAppearance調整四種場景下的UI外觀,並探討客製化返回鍵UI又保留返回手勢的做法,可以有效地客製化NavigationBar的外觀,並避免一些NG作法。
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
本篇文章將分享手機App設計教學,並往後介紹使用Flutter開發App的相關知識和技巧。透過這系列的分享,讀者將能夠學習如何利用設計和程式開發技能來製作一個App。文章中也提供了一些靈感來源和教學資源,幫助讀者進行設計和開發的思考和學習。
Thumbnail
本篇文章將分享手機App設計教學,並往後介紹使用Flutter開發App的相關知識和技巧。透過這系列的分享,讀者將能夠學習如何利用設計和程式開發技能來製作一個App。文章中也提供了一些靈感來源和教學資源,幫助讀者進行設計和開發的思考和學習。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News