侠客行・iOS 26 Liquid Glass TabBar 破阵记

侠客行・iOS 26 Liquid Glass TabBar 破阵记
在这里插入图片描述

引子

话说侠客岛旁的 “码农山庄” 里,有位青年开发者石破天,一手 SwiftUI 功夫练得炉火纯青,身旁常伴着心思缜密的产品女侠阿绣。

在这里插入图片描述

这日,山庄接到一桩棘手活计 —— 玄铁老怪掌管的 “APP 审核阁” 放出话来,凡要上 iOS 26 的 APP,必过Liquid Glass设计关,尤其Tab Bar这块,稍有差池便打回重练。

在本篇侠客行中,您将学到如下内容:

石破天与阿绣不敢怠慢,即刻开干,誓要破解这 Liquid Glass 的 Tab Bar 玄机。


1. 📱 初探 iOS 26 的 Tab Bar:旧功新用,基础先扎牢

阿绣翻出 iOS 18 的适配文档,对石破天道:“天哥,若咱们之前吃透了 iOS 18 的 Tab Bar 更新,这次应对 Liquid Glass 便是胸有成竹;若是没做过,也得先搭个最简框架试试水。”

在这里插入图片描述

说罢,石破天便敲出一段TabView基础代码 —— 用Tab包裹页面,配上系统图标,正是健身 APP 常用的 “运动记录” 与 “动作库” 标签:

TabView{// Workouts标签:对应“运动记录”页面,用哑铃填充图标Tab("Workouts", systemImage:"dumbbell.fill"){WorkoutsView()}// Exercises标签:对应“动作库”页面,用传统力量训练图标Tab("Exercises", systemImage:"figure.strengthtraining.traditional"){ExercisesView()}}

他用 Xcode 26 编译后,先在 iOS 18 设备上运行 ——Tab Bar 还是老样子,扎实却少了灵动感:

在这里插入图片描述

可一换 iOS 26 设备,屏幕上的 Tab Bar 竟变了模样:

在这里插入图片描述

通体透着Liquid Glass的通透感,像蒙了一层薄雾,与页面浑然一体。

在这里插入图片描述

阿绣指着屏幕皱眉:“你看,之前咱们在 Tab Bar 上方加的紫色‘添加按钮’,现在挡住了下方内容,这可不符 Liquid Glass‘分层不遮挡’的规矩,玄铁老怪见了必定挑刺。”

在这里插入图片描述

2. 🔍 拆解 Tab Bar 的模糊特效:藏在 “滚动容器” 里的玄机

石破天盯着屏幕犯愁,阿绣却忽然想起苹果健康 APP 的设计:“健康 APP 的列表是能滚到 Tab Bar 底下的,还带着模糊效果,不如咱们也试试把列表‘拉’到 Tab Bar 下面?” 。

在这里插入图片描述

二人先分析当前页面结构 —— 原来他们用VStack叠了筛选栏、列表和按钮,按钮挡住了列表,导致 Tab Bar 无法 “穿透” 显示模糊:

VStack{ScrollView(.horizontal){/* 横向滚动的筛选栏 */}List{/* 运动动作列表 */}Button{/* 紫色“添加动作”按钮——问题根源 */}

石破天试着删掉按钮,再运行时,奇迹出现了:

在这里插入图片描述

列表果然延伸到了 Tab Bar 下方,Tab Bar 自动透出一层模糊,与健康 APP 如出一辙!

在这里插入图片描述

他拍腿大笑:“原来如此!Liquid Glass 的模糊特效是默认给‘覆盖在滚动容器上的 Tab Bar’的,之前有按钮挡着,滚动容器没贴到 Tab Bar,自然出不来效果。”

3. 📜 给 TabView 加 “缩骨功”:tabBarMinimizeBehavior 显神通

刚解决模糊问题,玄铁老怪便飘然而至,扫了眼屏幕道:“模糊是有了,可用户滚动时 Tab Bar 还这么显眼,不够灵动,算不得精通 Liquid Glass。”

在这里插入图片描述

石破天心中一紧,阿绣却递过一份 iOS 26 新 API 文档:“天哥,试试这个tabBarMinimizeBehavior修饰符,就像给 Tab Bar 练了‘缩骨功’,滚动时能自动变小!”

石破天立刻给TabView加上修饰符:

TabView{/* 里面还是原来的两个Tab页面 */}.tabBarMinimizeBehavior(.onScrollDown)// 关键:用户向下滚动时,Tab Bar自动最小化

运行后,手指向下滑动列表,Tab Bar 果然悄悄 “缩” 了一圈,既不遮挡内容,又没完全消失 —— 玄铁老怪眯眼瞧了瞧,没说话,但眉头舒展了些。

在这里插入图片描述

石破天暗自庆幸:“还好这修饰符只在 Liquid Glass 模式下生效,要是在 iOS 18 老设计(Old Style)里用了没反应,今日可就栽了。”

4. 🧩 给 Tab Bar 加 “配件”:tabViewBottomAccessory 的坑与悟

解决了最小化,石破天又惦记起之前删掉的 “添加动作” 按钮:“能不能把按钮加回 Tab Bar 上方?” 。

在这里插入图片描述

阿绣指着文档里的tabViewBottomAccessory说:“这是 iOS 26 新出的‘配件视图’,能放在 Tab Bar 上面,试试?”

在这里插入图片描述

石破天依言添加了如下代码:

TabView{/* 原有Tab页面 */}.tabBarMinimizeBehavior(.onScrollDown).tabViewBottomAccessory {// 给Tab Bar加“配件”——这里放“添加动作”按钮Button("Add exercise"){// 点击后打开“添加新运动动作”的逻辑}.purpleButton()// 自定义的紫色按钮样式}

可运行后却发现问题:无论切到 “运动记录” 还是 “动作库”,这按钮都在 —— 阿绣摇头道:“苹果的用法是‘全局配件’,比如音乐 APP 的播放器控制,每个页面都需要;咱们这按钮只在‘动作库’有用,放这就画蛇添足了。” 。

在这里插入图片描述

石破天只好删掉配件,叹道:“看来此路不通,得另想办法。”

5. 🔍 误入 “搜索 - tab” 歧途:role: .search 的真实用途

二人正琢磨,阿绣忽然想起健康 APP 右下角有个搜索按钮:“要不试试给 Tab 加个‘搜索角色’?文档里说role: .search能把 Tab 放右边。” 。

石破天马上修改了代码:

// 新增一个Tab,角色设为.search,想当“添加按钮”用Tab("Add", systemImage:"plus", value:Tabs.exercises, role:.search){/* 原本想放添加页面,结果打开是全屏 */}

可一点这个 “加号 Tab”,竟弹出个全屏页面 —— 哪里是浮动按钮!?

在这里插入图片描述

阿绣哭笑不得:“原来role: .search 是给‘搜索页面’用的,不是随便放按钮的,咱们这是‘张冠李戴’了。” 石破天挠挠头:“看来得放弃 TabView 的思路,直接在页面上做文章。”

6. ✨ 柳暗花明:ZStack+glassEffect 造 “玻璃态浮动按钮”

眼看天色渐暗,阿绣忽然灵光一闪:“Liquid Glass 讲究‘分层’,咱们用ZStack把按钮‘浮’在页面上,再加个glassEffect,不就贴合设计了?”

在这里插入图片描述

石破天眼睛一亮,立刻敲出代码:

ZStack(alignment:.bottomTrailing){// 对齐方式设为右下,按钮贴右下角// 这里放“动作库”的主要内容:筛选栏+列表VStack{ScrollView(.horizontal){/* 筛选栏 */}List{/* 动作列表 */}}// 浮动按钮:核心是glassEffect修饰符Button(action:{// 点击打开“添加新动作”弹窗}){Label("Add Exercise", systemImage:"plus").bold()// 字体加粗,突出按钮.labelStyle(.iconOnly)// 只显图标,不显文字,更简洁.padding()// 内部加边距,增大点击区域}.glassEffect(.regular.interactive())// 关键!添加Liquid Glass玻璃态,与系统融合.padding([.bottom,.trailing],12)// 外部右下加12pt边距,避免贴边}

运行后,一个带着薄雾质感的 “加号按钮” 浮在列表右下角,滚动时既不遮挡内容,又和 Tab Bar 的 Liquid Glass 风格浑然一体—— 玄铁老怪凑过来细看,手指点了点按钮,又滑动列表,半晌才道:“这按钮虽没用到 TabView 的 API,却吃透了 Liquid Glass 的‘分层融合’心法,算你们过关。”

在这里插入图片描述

尾声:技术如侠,心法为上

此事过后,石破天与阿绣悟得一理 —— iOS 26 的 Liquid Glass 从不是刁难人的 “武功秘籍”,而是倒逼开发者贴合用户体验的 “心法”。

在这里插入图片描述

TabView的种种新特性,无论是tabBarMinimizeBehavior的灵动、tabViewBottomAccessory的全局适配,还是glassEffect的通透,核心都在 “让界面服务内容,而非喧宾夺主”。

玄铁老怪虽严苛,见二人不墨守成规、能灵活拆解问题,也不禁点头:“后生可畏,这关,你们过了!” 而石破天与阿绣也明白,往后应对新系统,只需紧抓设计哲学,再难的技术关,也能如侠客破阵般,迎刃而解。

在这里插入图片描述

那么,看到这里各位少侠是否也收益良多呢?

感谢观赏,宝子们下次再会吧!😎

Read more

个人所得税的APP模拟器,纯java版代码开源,截图录屏都可以【仅供参考】

个人所得税的APP模拟器,纯java版代码开源,截图录屏都可以【仅供参考】

文件下载地址:https://wenshushu.vip/pan/index.php?id=36    提取码:7bf9 给大家分享一个用纯Java实现的个人所得税计算模拟器,包含完整的GUI界面和核心计算逻辑,适合Java学习者和税务计算需求者参考使用。 一、项目简介 这是一个使用Java Swing开发的个人所得税计算模拟器,模拟了官方个税APP的核心功能,包括: · 综合所得年度汇算计算 · 税率表查询 · 专项扣除项目设置 · 税务计算结果展示 项目特点: · 100%纯Java实现,无第三方依赖 · 完整GUI界面,支持用户交互 · 详细的代码注释 · 遵循2023年最新个税政策 二、核心代码实现 1. 主程序入口 ```java package com.tax.calculator; import javax.swing.*; /**  * 个人所得税计算模拟器 - 主程序  * @author TaxDeveloper  * @version

By Ne0inhk

协作机器人拖动示教控制方法的实现原理介绍

协作机器人(Cobot)的拖动示教(Hand Guiding / Drag Teaching)是一种直观的人机交互方式:操作者用手直接拖动机器人末端或机械臂,使其沿期望轨迹运动,系统实时记录位姿或生成路径,用于后续复现。其核心在于实现“零力”或“低阻抗”状态下的安全、顺滑跟随。 一、基本目标 在拖动示教模式下,机器人应表现为: * 对外部人力几乎无阻力(即“零力”或“重力补偿”状态); * 各关节可自由转动,但受安全约束(如速度、位置限幅); * 实时记录末端位姿或关节角,用于编程。 二、核心原理:基于力/力矩传感器的阻抗控制 1. 力矩感知 协作机器人通常在每个关节集成高精度力矩传感器(或通过电机电流估算关节力矩)。 * 实际测量/估计的关节力矩: τₛ = [τ₁, τ₂, ..., τₙ]ᵀ * 重力引起的理论力矩(

By Ne0inhk
AI绘画——即梦AI基础操作入门教程

AI绘画——即梦AI基础操作入门教程

即梦AI基础操作入门教程: 文章转载自:即梦AI基础操作入门教程 - AI智研社 目录 即梦AI基础操作入门教程: 一、即梦AI是什么?   二、注册与登录步骤 三、即梦AI界面介绍 四、基础功能详细操作步骤 (一)AI绘画功能详细操作 (二)AI视频生成详细操作 一、即梦AI是什么?   即梦AI 是由字节跳动开发的一款AI创作工具,主要功能包括AI绘画、AI视频生成、AI数字人制作等。它能帮助用户快速生成高质量的视觉内容,广泛应用于内容创作、短视频制作、营销宣传和教育培训等领域。 二、注册与登录步骤 访问官网: 进入https://jimeng.jianying.com,点击页面上的“登录”按钮。(也可以下载即梦APP) (备用入口:即梦AI - AI智研社) 账号注册: 使用抖音账号扫码,即可注册登录 三、即梦AI界面介绍

By Ne0inhk

AI绘画关键词网站效率提升实战:从数据预处理到模型加速

快速体验 在开始今天关于 AI绘画关键词网站效率提升实战:从数据预处理到模型加速 的探讨之前,我想先分享一个最近让我觉得很有意思的全栈技术挑战。 我们常说 AI 是未来,但作为开发者,如何将大模型(LLM)真正落地为一个低延迟、可交互的实时系统,而不仅仅是调个 API? 这里有一个非常硬核的动手实验:基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。 从0到1构建生产级别应用,脱离Demo,点击打开 从0打造个人豆包实时通话AI动手实验 AI绘画关键词网站效率提升实战:从数据预处理到模型加速 最近在开发一个AI绘画关键词推荐网站时,遇到了不少性能瓶颈。用户输入描述词后,系统需要快速返回最相关的绘画风格关键词,但最初的版本响应慢、推荐结果也不够精准。经过一系列优化,最终将查询响应时间降低了60%。下面分享整个优化过程的关键技术和实战经验。 痛点分析:

By Ne0inhk