SwiftUI 7(iOS 26 / iPadOS 26)中玻璃化標簽頁的全新玩法

在這里插入圖片描述

🍸 Liquid Glass 登場:界面設計煥然一新

WWDC25 可謂驚喜連連,其中最引人矚目的變革之一,莫過于蘋果推出的全新跨平臺設計語言 —— Liquid Glass(液態玻璃)。這一設計風格涵蓋了從按鈕到導航欄,再到本篇的主角——標簽頁(Tabs)

在這里插入圖片描述

在 Liquid Glass 中,標簽頁不僅視覺上煥然一新,交互也有了脫胎換骨的變化。本文將帶你一探 SwiftUI 中關于新標簽頁的 API 和用法,助你 快人一步、技高一籌

在本篇博文中,您將學到如下內容:

    • 🍸 Liquid Glass 登場:界面設計煥然一新
    • 🧭 Tab 的新寫法:表里如一,圖文并茂
    • 📌 編程式控制 tab:與狀態同步,持久不滅
    • 🔍 使用 Tab 角色:讓搜索獨樹一幟
    • 🧱 跨平臺適配:Sidebar 自動切換
    • 🧩 Tab 附加視圖(Accessory):不止于導航
    • 🌀 滾動時最小化標簽欄:內容為王,導航讓位
    • 📌 總結:Tab 的新紀元
    • 🎉 總結

閑言少敘,讓我們馬上開始液態玻璃 TabView 大冒險吧!
Let’s go!!!😉


🧭 Tab 的新寫法:表里如一,圖文并茂

為了能夠充分利用全新 TabView 驚鴻艷影般的外觀,我們需要使用 Tab 視圖來代替之前的 tabItem 修改器方法:

struct ContentView: View {var body: some View {TabView {Tab("feed", systemImage: "list.star") {// 內容區域}Tab("settings", systemImage: "gear") {// 內容區域}}}
}

🔍 解析:

  • 我們依然使用 TabView,但每個 tab 不再直接放在 TabView 內部;
  • 每個子視圖包裹在新的 Tab 類型中,圖標采用 SF Symbols,圖文并茂,美觀實用
  • 如此寫法符合 Liquid Glass 風格,可享受其視覺特性與交互增強。

📌 編程式控制 tab:與狀態同步,持久不滅

利用 @SceneStorage 動態屬性,我們可以將 selectedTabIndex 放在 App 關聯的持久存儲中,讓每次應用重啟都能“刻骨銘心”:

@SceneStorage("selectedTab") private var selectedTabIndex = 0TabView(selection: $selectedTabIndex) {Tab("feed", systemImage: "list.star", value: 0) {// Feed 內容}Tab("settings", systemImage: "gear", value: 1) {// 設置頁內容}
}

🎓 擴展知識:

  • @SceneStorage 可在應用關閉后保留狀態;
  • TabView(selection:) 搭配使用,當用戶返回應用時可自動恢復上次選中的標簽;
  • 每個 Tab 綁定唯一 value 值,避免沖突。

🔍 使用 Tab 角色:讓搜索獨樹一幟

為了進一步精雕細琢我們 Tab 的習性,寶子們可以讓特別的 Tab 成為特別的角色,正所謂:“特別的愛給特別的你??”:

Tab("search", systemImage: "magnifyingglass", value: 1, role: .search) {// 搜索內容
}

比如在上面的代碼中,我們就特別標記出 search 用途的標簽:

在這里插入圖片描述

📚 說明:

  • role 屬性用于標記該標簽的用途;
  • 當前唯一支持的角色是 .search,系統將搜索標簽在 UI 中隔離處理(如在 iOS 中會單獨顯示);
  • 在未來 iOS 版本中,可能加入更多角色,如 .profile.notifications 等等。

🧱 跨平臺適配:Sidebar 自動切換

為了能夠讓 iOS 中的 TabView 匹配 iPadOS / macOS 里的 sidebar 外觀,我們可以用 sidebarAdaptable 樣式來向系統做出特殊說明:

TabView {Tab("feed", systemImage: "list.star", value: 0) {}Tab("settings", systemImage: "gear", value: 2) {}
}
.tabViewStyle(.sidebarAdaptable)

在 Xcode 26 中的預覽結果如下圖所示:

在這里插入圖片描述

💡 解讀:

  • .sidebarAdaptable 讓同一段代碼在 iPhone 上呈現為底部標簽頁;
  • 而在 iPad 與 macOS 上則自動轉為 Sidebar,一舉多得,省心省力
  • 是打造“響應式 UI”的必備良藥。

🧩 Tab 附加視圖(Accessory):不止于導航

我們還可以為特定 Tab 附加輔助視圖(Accessory):

TabView {...}.tabViewBottomAccessory {if selectedTabIndex == 1 {HStack {TextField("輸入搜索文本", text: $searchText)Button("搜索", systemImage: "sparkle.magnifyingglass", action: {print("搜索中...")})}.padding(.horizontal)}}

比如,在上面的代碼中當用戶進入搜索 Tab 時,我們在 TabView 工具欄上方增加一個搜索功能框:

在這里插入圖片描述

🎼 應用場景:

  • Apple Music 使用 accessory view 來顯示當前播放狀態并提供暫停/跳過按鈕;
  • 可用于顯示網絡狀態、下載進度、通知中心入口等全局功能;
  • 全天可見、隨時響應,用戶體驗 穩如泰山

🌀 滾動時最小化標簽欄:內容為王,導航讓位

聊了前面那么多,我還是覺得 iOS 26 為 TabView 增加的最有趣且最實用的功能就是讓用戶在滾動時自動“精簡”下方 TabBar 的布局:

.tabBarMinimizeBehavior(.onScrollDown)

完整示例在此:

TabView {Tab("feed", systemImage: "list.star", value: 0) {}Tab("settings", systemImage: "gear", value: 2) {}
}
.tabViewStyle(.sidebarAdaptable)
.tabBarMinimizeBehavior(.onScrollDown)
.tabViewBottomAccessory {Button("Do Action") {}
}

從 Xcode 26 預覽的顯示中可以看到,當用戶向下滾動時 TabBar 會自動收縮,而向上滾動時 TabBar 又會“恢復如常”:

在這里插入圖片描述

🚀 擴展說明:

  • tabBarMinimizeBehavior 可控制標簽欄在內容滾動時是否隱藏;
  • .onScrollDown 表示向下滾動時自動收起 tab,釋放更多空間;
  • 非常適用于資訊類、社交類、閱讀類的應用。

📌 總結:Tab 的新紀元

特性說明
新 Tab API使用 Tab("title", systemImage:, value:)
場景存儲@SceneStorage 保存選中狀態
Tab Role當前支持 .search
sidebarAdaptableiPad/macOS 自動變身為 Sidebar
tabViewBottomAccessory全局操作附加視圖
tabBarMinimizeBehavior滾動時隱藏標簽欄,內容更聚焦

🎉 總結

在本篇博文中,我們探索了 Liquid Glass 為 tab 導航帶來的煥新體驗。新的視覺、行為與結構為 SwiftUI 注入新活力,也為開發者帶來更多“獨步天下,登峰造極”的內功修為。

👋 感謝觀賞!再會啦!😎

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87758.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87758.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87758.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PDF處理控件Spire.PDF教程:在Java中讀取PDF,提取文本、圖片和表格

在數據驅動的現代開發中,高效處理 PDF 文檔已成為 Java 開發者不可或缺的核心能力。無論是處理各類發票掃描件、業務分析報告,還是包含豐富圖表的技術文檔,掌握 Java 版的 PDF 解析技術都將大幅提升數據處理效率,充分釋放文檔中的…

跨平臺游戲引擎 Axmol-2.7.0 發布

Axmol 2.7.0 版本是一個以錯誤修復和功能改進為主的次要LTS長期支持版本 🙏感謝所有貢獻者及財務贊助者:scorewarrior、peterkharitonov、duong、thienphuoc、bingsoo、asnagni、paulocoutinhox 重大變更 Android Studio 最低版本要求升級至 2025.1.1…

XML 筆記

<image src"hue.gif" width"100" height"auto" align"left"/> <br/> 換行 在 XML 中&#xff0c;<![CDATA[ 和 ]]> 用于定義一個 CDATA 節&#xff08;Character Data Section&#xff09;。CDATA 節是用于將一段…

Python實現優雅的目錄結構打印工具

Python實現優雅的目錄結構打印工具 在軟件開發、系統管理和日常工作中&#xff0c;我們經常需要查看和分析目錄結構。 工具功能概述 這個DirectoryPrinter類提供了以下功能&#xff1a; 遞歸打印目錄結構可配置是否顯示隱藏文件可設置最大遞歸深度自定義縮進和文件/文件夾符…

【Python】文件打開:with open具體解析

示例 # 使用 with 語句打開文件并讀取內容 with open(pi.txt, r) as file_object:contents file_object.read()print(contents) # 文件在代碼塊結束后自動關閉with 解析 with 是 Python 中的上下文管理器語法&#xff0c;用于確保某個操作完成后自動執行清理操作。它常用于文…

Acrel-1000系列分布式光伏監控系統在湖北荊門一馬光彩大市場屋頂光伏發電項目中應用

摘 要&#xff1a;分布式光伏發電能夠對日益嚴重的環境壓力起到有效緩解作用,在當前對環境保護需求越來越大情況下,發電行業在發展中不但要提升發電效率,同時也需要降低成本。分布式光伏發電主要是利用風能和太陽能等可再生清潔能源進行發電,對于空氣質量具有改善效果,和傳統發…

CentOS-6與CentOS-7的網絡配置IP設置方式對比 筆記250706

CentOS-6與CentOS-7的網絡配置IP設置方式對比 筆記250706 1?? 參考 1 CentOS-6 與 CentOS-7 的網絡配置IP設置方式對比 CentOS 6 和 CentOS 7 在網絡配置上存在顯著差異&#xff0c;主要體現在配置文件結構、管理工具、服務機制和命令集等方面。以下是兩者的核心對比&#x…

【網絡系列】HTTP 429 狀態碼

博客目錄 HTTP 429 狀態碼的定義與背景產生 429 錯誤的常見場景1. API 速率限制觸發2. 網絡爬蟲行為被檢測3. 分布式拒絕服務(DDoS)防護4. 用戶/IP 特定限流策略5. 應用程序邏輯錯誤 深入解讀 429 響應的關鍵頭部信息Retry-After 頭部X-RateLimit 系列頭部RateLimit 標準化頭部…

C++無鎖數據結構:CAS(Compare-and-Swap)

在高并發場景下&#xff0c;傳統鎖機制帶來的線程阻塞和上下文切換開銷成為性能瓶頸。無鎖數據結構通過原子操作實現線程安全&#xff0c;避免了鎖的使用&#xff0c;成為高性能系統的關鍵技術。本文將深入探討C中基于CAS&#xff08;Compare-and-Swap&#xff09;的無鎖數據結…

【數字圖像處理】

數字圖像處理 緒論1. 數字圖像處理基本概念2. 數字圖像處理系統的組成3. 數字圖像處理技術研究的內容4. 數字圖像處理技術的應用領域5. 圖像處理技術涉及的學科領域 圖像處理基礎1. 電磁波譜與可見光譜2. 人眼的亮度視覺特性3. 圖像的表示4. 空間分辨率和灰度級分辨率5. 像素間…

linux chrome瀏覽器打不開了

報錯信息 通過terminal執行google-chrome [12714:12714:0706/223620.723519:ERROR:chrome/browser/process_singleton_posix.cc:358] The profile appears to be in use by another Google Chrome process (54949) on another computer (192.168.0.17). Chrome has locked t…

Python:模塊

一、Python模塊基礎概念 1. 什么是Python模塊&#xff1f; 在 Python 中&#xff0c;模塊&#xff08;Module&#xff09; 是一個包含 Python 代碼的文件&#xff08;擴展名為 .py&#xff09;&#xff0c;用于組織代碼、實現功能復用和命名空間管理。模塊可以包含變量、函數…

C 語言指針與作用域詳解

一、指針基礎概念 &#xff08;一&#xff09;指針的本質 指針是 C 語言中一個重要的概念&#xff0c;其本質是內存地址。在計算機內存中&#xff0c;每個字節都有唯一的編號&#xff0c;這個編號就是我們所說的內存地址&#xff0c;而指針變量就是用于存儲這些內存地址的變量…

解鎖阿里云ACK:開啟Kubernetes容器化應用新時代

引言&#xff1a;云原生時代下的 ACK 在當今數字化飛速發展的時代&#xff0c;云原生技術正以前所未有的速度改變著軟件開發和部署的格局。隨著企業對應用敏捷性、彈性擴展以及成本優化的需求日益增長&#xff0c;云原生已成為眾多企業實現數字化轉型的關鍵路徑。在云原生的技…

【C++基礎】內存管理四重奏:malloc/free vs new/delete - 面試高頻考點與真題解析

在 C/C 編程中&#xff0c;內存管理是核心基礎技能&#xff0c;而malloc/free和new/delete作為兩套內存分配釋放機制&#xff0c;是面試中高頻出現的考點。 一、內存管理的 "雙生花"&#xff1a;基礎概念解析 1.1 malloc/free&#xff1a;C 語言的內存管家 malloc全…

Dify+Ollama+QwQ:3步本地部署,開啟AI搜索新篇章

如何來評價本地化部署的價值與優勢分析&#xff1a; 成本優化與隱私保障 自定義搜索插件&#xff0c;告別信息過載 一鍵生成報告、分析&#xff0c;效率翻倍&#xff01; 接下來我們就嘗試跟隨來部署本地的價值所在! 1&#xff1a;安裝Ollama & 部署QwQ模型 1.1 安裝O…

FAISS 簡介及其與 GPT 的對接(RAG)

什么是 FAISS&#xff1f; FAISS (Facebook AI Similarity Search) 是 Facebook AI 團隊開發的一個高效的相似性搜索和密集向量聚類的庫。它主要用于&#xff1a; 大規模向量相似性搜索高維向量最近鄰檢索向量聚類 https://github.com/facebookresearch/faissFAISS 特別適合處理…

【Apache Doris 深度實戰:從 MPP 架構到實時分析,解鎖三大數據模型的性能優化秘籍】

一、安裝部署 安裝教程&#xff1a;GitHub地址 Doc文檔&#xff1a;Apache Doris 簡介 - Apache Doris 二、功能及作用 Apache Doris 是一款基于MPP 架構的高性能、實時分析型數據庫。它以高效、簡單和統一的特性著稱&#xff0c;能夠在亞秒級的時間內返回海量數據的查詢結果…

MySQL主從復制與讀寫分離概述

前言&#xff1a; 在數據驅動的現代應用中&#xff0c;數據庫面臨高并發讀寫與海量存儲的雙重挑戰。單一數據庫實例在性能、可用性及擴展性上逐漸成為瓶頸。MySQL主從復制&#xff08;Master-Slave Replication&#xff09;與讀寫分離&#xff08;Read/Write Splitting&#xf…

數據庫-元數據表

1. 什么是元數據表元數據&#xff1a;數據的數據&#xff0c;用以描述數據的信息也是數據&#xff0c;被稱為元數據2. 獲取元數據的方法MySQL提供了以下三種方法用于獲取數據庫對象的元數據&#xff1a;show語句從INFORMATION_SCHEMA數據庫里查詢相關表&#xff08;information…