当前位置: 首页 > news >正文

浪浪山 iOS 奇遇记:给 APP 裹上 Liquid Glass “琉璃罩”(下集)

在这里插入图片描述

引子

山大王的脚步声越靠越近,阿强手忙脚乱地把 MacBook 重新打开,阿花则攥着那片记满 “妖法秘籍” 的桃叶,指尖都捏出了汗。

在本篇奇遇记中,您将学到如下内容:

    • 引子
    • 📦 给按钮找 “新家”:GlassEffectContainer 的神奇魔法
    • 🔧 修 bug:让 “蜜滴” 真正融在一起
    • 🎉 山大王验收:从吹胡子瞪眼到拍手叫好
    • 📝 下集总结:浪浪山小妖的 “琉璃心得”

在这里插入图片描述

“别慌!” 阿花压低声音,“先把所有按钮塞进GlassEffectContainer里,这是让它们‘流起来’的关键,咱快试试!”

在这里插入图片描述


📦 给按钮找 “新家”:GlassEffectContainer 的神奇魔法

阿花对照着 “仙册”(开发者文档),手指在键盘上飞快敲击 —— 先给所有 Liquid Glass 按钮套上一个GlassEffectContainer容器,就像给散落在石桌上的果子找个 “蜜罐”,让它们能沾着糖浆融在一起。

修改后的代码长这样,阿花还特意加了中文注释,方便阿强看懂:

struct ContentView: View {@State private var isExpanded = falsevar body: some View {ZStack(alignment: .bottomTrailing) {// 背景图不变,还是浪浪山的风景Color.clear.overlay(Image("bg_img").resizable().scaledToFill().edgesIgnoringSafeArea(.all))// 重点!把所有琉璃按钮放进同一个GlassEffectContainer// 就像把所有果子放进同一个蜜罐,让它们能沾着糖浆融合GlassEffectContainer {button(type: .home)button(type: .write)button(type: .chat)button(type: .email)// 主按钮:之前加了interactive的“发光仙果”Button {withAnimation {isExpanded.toggle()}} label: {Label("Home", systemImage: "list.bullet").labelStyle(.iconOnly).frame(width: 50, height: 50).foregroundColor(.white)}.glassEffect(.regular.tint(.purple.opacity(0.8)).interactive()).padding(32)}}}// 自定义按钮方法:这里要改!去掉单个按钮的背景,让容器统一管“琉璃罩”private func button(type: ButtonType) -> some View {return Button {} label: {Label(type.label, systemImage: type.systemImage).labelStyle(.iconOnly).frame(width: 50, height: 50).foregroundColor(.white) // 图标白色,和主按钮呼应}// 给单个按钮也加上琉璃效果,让它能和主按钮融合.glassEffect(.regular.tint(.white.opacity(0.7)).interactive()).padding(32).offset(type.offset(expanded: isExpanded))// 弹簧动画:让按钮展开时像弹起来的蜜滴.animation(.spring(duration: type.duration, bounce: 0.2))}
}

写完代码,阿强深吸一口气点击 “运行”—— 结果屏幕上的按钮还是各自为政,既没融合,动起来也像生涩的石头,半点 “液态” 的影子都没有。

在这里插入图片描述

“咋回事啊?” 阿强急得抓头发,山大王的脚步声都到桃树下了。

阿花盯着代码突然拍了下大腿:“忘啦!单个按钮的glassEffect得让容器‘统一管理’,不能自己带!就像山大王的兵,得听一个将军指挥,不然就乱套了!”


更多关于 iOS 26 液态玻璃界面超帅动画的介绍,请小伙伴们移步如下链接观赏精彩的内容:

在这里插入图片描述

  • iOS 26 仅需几行代码让 SwiftUI 7 液态玻璃界面焕发新春

🔧 修 bug:让 “蜜滴” 真正融在一起

阿花赶紧删掉单个按钮里的.glassEffect(...),只在GlassEffectContainer里给主按钮留了效果,又加了个 “统一标识”——glassEffectID,让系统知道这些按钮是 “一伙的”,得一起渲染。

修改后的关键代码变成这样:

GlassEffectContainer {// 单个按钮去掉自己的glassEffect,靠容器统一渲染button(type: .home)button(type: .write)button(type: .chat)button(type: .email)Button {withAnimation {isExpanded.toggle()}} label: {Label("Home", systemImage: "list.bullet").labelStyle(.iconOnly).frame(width: 50, height: 50).foregroundColor(.white)}// 主按钮保留效果,再加个glassEffectID,让所有按钮认“大哥”.glassEffect(.regular.tint(.purple.opacity(0.8)).interactive()).glassEffectID("wave-wave-mountain-button-group") // 浪浪山专属标识.padding(32)
}// 自定义按钮方法:彻底删掉单个按钮的glassEffect
private func button(type: ButtonType) -> some View {return Button {} label: {Label(type.label, systemImage: type.systemImage).labelStyle(.iconOnly).frame(width: 50, height: 50).foregroundColor(.white)}.padding(32).offset(type.offset(expanded: isExpanded)).animation(.spring(duration: type.duration, bounce: 0.2))
}

这次点击运行,屏幕突然 “活” 了 —— 当阿强点击主按钮时,四个白色 “琉璃按钮” 像从紫色主按钮里 “流” 出来的蜜滴,靠近时边缘会轻轻融合,收缩时又会 “钻” 回主按钮里,整个过程像浪浪河的水在流动,连光影都跟着晃,比山大王珍藏的 “液态银瓶” 还神奇!

在这里插入图片描述

“成了!成了!” 阿强激动得差点把 MacBook 掀翻,阿花也笑着擦了擦额角的汗:“你看这效果,Apple 说的‘Liquid Glass’就是这意思 —— 不是硬邦邦的玻璃,是像水、像糖浆一样能融能聚的‘活玻璃’!”

在这里插入图片描述

俩人还发现,这GlassEffectContainer不仅让效果更 “液态”,还帮系统省了 “法力”(渲染性能)—— 就像把散着的柴火捆起来烧,又旺又省柴,APP 运行时再也不会像之前那样 “卡壳” 了。

在这里插入图片描述

🎉 山大王验收:从吹胡子瞪眼到拍手叫好

“你们俩磨磨蹭蹭半天,到底搞出啥玩意儿了?” 山大王背着双手走进来,一脸不耐烦,手里还攥着根桃枝,眼看就要敲阿强的脑袋。

阿花赶紧把 MacBook 转向山大王,阿强颤巍巍地点了下主按钮 —— 只见紫色 “琉璃盏” 轻轻一亮,四个白色 “蜜滴” 顺着屏幕边缘流出来,每个按钮点下去都会 “闪一下”,收缩时又像归巢的小鸟,稳稳钻回主按钮里。

在这里插入图片描述

山大王的眼睛越睁越大,手里的桃枝都掉在了地上:“这…… 这是啥妖法?比我上次从山外抢来的‘琉璃灯’还好看!点一下还会亮,跟活的似的!”

“大王,这叫Liquid Glass!是 iOS 26 的新设计,就像给 APP 裹了层会流动的琉璃罩!” 阿花赶紧解释,阿强也补充:“以后访客登记时,点这些按钮就像摸流水似的,比之前的硬疙瘩舒服多了!”

在这里插入图片描述

山大王围着 MacBook 转了三圈,突然拍了下阿强的肩膀:“好!好!这次没白扣你们桃干!今晚加肉干,再给你们的 APP 加个新功能 —— 把访客头像也弄成这‘琉璃’样!”

在这里插入图片描述

俩人对视一眼,偷偷笑了 —— 不仅保住了桃干,还赚了肉干,更重要的是,他们终于摸清了 Liquid Glass 的 “脾气”:不是乱盖 “琉璃罩”,而是让元素像水一样 “融” 在界面上,既好看又好用。

📝 下集总结:浪浪山小妖的 “琉璃心得”

阿强和阿花蹲在桃树下,啃着山大王赏的肉干,总结出了用 Liquid Glass 的 “三大秘诀”:

  1. 找对位置:只给 “浮在主界面上的元素” 盖罩(工具栏、按钮等),别把主内容裹成 “糊状物”,就像浪浪山的岗亭要盖在路边,不能挡山路;

  2. 善用容器:多个琉璃元素要放进GlassEffectContainer,再加个glassEffectID“认亲”,让它们像蜜滴一样融在一起,别各自为政;

  3. 加互动感:给glassEffectinteractive(),让按钮点起来 “亮一下、大一点”,像摸了会发光的萤火虫,比死木头有趣多了。

“对了,” 阿花突然想起,“Apple 还留了‘逃生舱’—— 要是有小妖暂时不想用 Liquid Glass,下一个 iOS 大版本前都能躲,不过咱浪浪山要赶时髦,肯定不用躲啦!”

阿强点点头,望着夕阳下的浪浪河:“下次再给 APP 加功能,咱还能用这‘琉璃妖法’—— 比如给访客列表的筛选按钮也裹层罩,让它像飘在河上的荷叶!”

在这里插入图片描述

山大王的大嗓门又传来了:“俩小妖!明天开始弄头像的琉璃效果,别偷懒!”

俩人赶紧应着,心里却一点都不慌 —— 毕竟,他们已经掌握了 Liquid Glass 的 “核心咒语”,再难的任务,也像给 APP 裹层 “会流水的琉璃” 一样简单啦!

(全剧终?不,浪浪山 APP 的优化之路还长着呢,下次咱们再唠新 “妖法”!宝子们不见不散,再会吧!😎)

http://www.dtcms.com/a/441999.html

相关文章:

  • Leetcode 215. 数组中的第K个最大元素 快速排序 / 堆排序
  • 网站建设排名奇艺地域邢台建设一个企业网站
  • 电子商务网站建设员网站建设维护文档
  • QT肝8天18--用户角色管理
  • 【开题答辩实录分享】以《基于Python的新能源汽车管理系统的设计与实现》为例进行答辩实录分享
  • springboot+vue智慧旅游管理小程序(源码+文档+调试+基础修改+答疑)
  • [创业之路-683]:“行业的分类”
  • MCI评估量表
  • 探索 Docker/K8s 部署 MySQL 的创新实践与优化技巧——高可用与性能调优进阶
  • Coze源码分析-资源库-编辑知识库-前端源码-核心组件
  • 搜索网站排名mj wordpress
  • 网站容量空间一般要多大做装修效果图的网站
  • MySQL-表的操作
  • C++架构全解析:从设计哲学到实战应用
  • wordpress 多级导航网络营销优化外包
  • 视频生成技术Deepfake
  • 【大语言模型 82】LoRA高级技巧:秩选择与初始化策略
  • 自己做的网站百度搜不到网站的空间是
  • Leetcode 3698. Split Array With Minimum Difference
  • mysql学习--日志查询
  • 北京做网站哪家强网站被k如何恢复
  • Redis的零食盒满了怎么办?详解缓存淘汰策略
  • display mac-address vlan vlan-id 概念及题目
  • 国内十大网站建设广州11个区排名
  • windows远程桌面连接的时候用户名用什么
  • Webpack实战笔记:从自动构建到本地服务器搭建的完整流程
  • SpringBoot + MongoDB全栈实战:从架构原理到AI集成
  • 台山网站建设公司申请云应用wordpress
  • 小迪安全v2023学习笔记(九十五讲)—— 云原生篇Docker安全权限环境检测容器逃逸特权模式危险挂载
  • 从零开始的C++学习生活 1:命名空间,缺省函数,函数重载,引用,内联函数