尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
swiftui-liquid-glass - liquid-glass
在 SwiftUI 中实现 Liquid Glass 设计概述Liquid Glass 是 iOS 中引入的一种动态材质结合了玻璃的光学特性与流动感。它会模糊其后的内容反射周围内容的颜色和光线并实时响应触摸和指针交互。本指南涵盖如何在 SwiftUI 应用中实现和自定义 Liquid Glass 效果。当被请求帮助采用新的 Apple 设计时你应该始终查找 Liquid Glass 的指南。Liquid Glass 的关键特性模糊材质背后的内容反射周围内容的颜色和光线响应触摸和指针交互可以在过渡期间在形状之间变形可用于标准组件和自定义组件基本实现为视图添加 Liquid Glass为视图添加 Liquid Glass 的最简单方式是使用glassEffect()修饰符Text(Hello, World!).font(.title).padding().glassEffect()默认情况下这会在视图内容后面的 Capsule 形状内应用常规变体的 Glass。自定义形状你可以为 Liquid Glass 效果指定不同的形状Text(Hello, World!).font(.title).padding().glassEffect(in:.rect(cornerRadius:16.0))常见的形状选项.capsule默认.rect(cornerRadius: CGFloat).circle自定义 Liquid Glass 效果Glass 变体与属性你可以通过配置Glass结构来自定义 Liquid Glass 效果Text(Hello, World!).font(.title).padding().glassEffect(.regular.tint(.orange).interactive())关键自定义选项.regular—— 标准玻璃效果.tint(Color)—— 添加颜色色调以暗示突出性.interactive(Bool)—— 让玻璃响应触摸和指针交互制作交互式玻璃让 Liquid Glass 响应触摸和指针交互Text(Hello, World!).font(.title).padding().glassEffect(.regular.interactive(true))或者更简洁地Text(Hello, World!).font(.title).padding().glassEffect(.regular.interactive())处理多个玻璃效果使用 GlassEffectContainer当对多个视图应用 Liquid Glass 效果时使用GlassEffectContainer以获得更好的渲染性能并启用混合和变形效果GlassEffectContainer(spacing:40.0){HStack(spacing:40.0){Image(systemName:scribble.variable).frame(width:80.0,height:80.0).font(.system(size:36)).glassEffect()Image(systemName:eraser.fill).frame(width:80.0,height:80.0).font(.system(size:36)).glassEffect()}}spacing参数控制 Liquid Glass 效果如何相互交互较小的间距视图需要更近才能合并效果较大的间距效果在更远的距离合并合并多个玻璃效果要将多个视图组合成单个 Liquid Glass 效果使用glassEffectUnion修饰符Namespaceprivatevarnamespace// 稍后在视图中GlassEffectContainer(spacing:20.0){HStack(spacing:20.0){ForEach(symbolSet.indices,id:\.self){iteminImage(systemName:symbolSet[item]).frame(width:80.0,height:80.0).font(.system(size:36)).glassEffect().glassEffectUnion(id:item2?1:2,namespace:namespace)}}}这在动态创建视图或视图位于 HStack 或 VStack 之外时很有用。变形效果与过渡创建变形过渡在带 Liquid Glass 的视图之间过渡时创建变形效果使用Namespace属性包装器创建命名空间使用glassEffectID为每个 Liquid Glass 效果关联唯一标识符在改变视图层级时使用动画StateprivatevarisExpanded:BoolfalseNamespaceprivatevarnamespacevarbody:someView{GlassEffectContainer(spacing:40.0){HStack(spacing:40.0){Image(systemName:scribble.variable).frame(width:80.0,height:80.0).font(.system(size:36)).glassEffect().glassEffectID(pencil,in:namespace)ifisExpanded{Image(systemName:eraser.fill).frame(width:80.0,height:80.0).font(.system(size:36)).glassEffect().glassEffectID(eraser,in:namespace)}}}Button(Toggle){withAnimation{isExpanded.toggle()}}.buttonStyle(.glass)}当带 Liquid Glass 的视图因视图层级变化而出现或消失时变形效果会发生。使用 Liquid Glass 的按钮样式玻璃按钮样式SwiftUI 为 Liquid Glass 提供内置的按钮样式Button(Click Me){// Action}.buttonStyle(.glass)突出的玻璃按钮样式对于更突出的玻璃按钮Button(Important Action){// Action}.buttonStyle(.glassProminent)高级技术背景扩展效果使用背景扩展效果将内容延伸到侧边栏或检查器后面NavigationSplitView{// Sidebar content}detail:{// Detail content.background{// Background content that extends under the sidebar}}将水平滚动延伸到侧边栏下方将水平滚动视图延伸到侧边栏或检查器下方ScrollView(.horizontal){// Scrollable content}.scrollExtensionMode(.underSidebar)最佳实践容器使用对多个视图应用 Liquid Glass 时始终使用GlassEffectContainer以获得更好的性能和变形效果。效果顺序在影响视图外观的其他修饰符之后应用.glassEffect()修饰符。间距考虑仔细选择容器中的间距值以控制玻璃效果如何以及何时合并。动画在改变视图层级时使用动画以启用平滑的变形过渡。交互性为应响应用户交互的玻璃效果添加.interactive()。一致的设计在应用中保持一致的形状和样式以获得统一的观感。示例带 Liquid Glass 的自定义徽章structBadgeView:View{letsymbol:Stringletcolor:Colorvarbody:someView{ZStack{Image(systemName:hexagon.fill).foregroundColor(color).font(.system(size:50))Image(systemName:symbol).foregroundColor(.white).font(.system(size:30))}.glassEffect(.regular,in:.rect(cornerRadius:16))}}// 使用方式GlassEffectContainer(spacing:20){HStack(spacing:20){BadgeView(symbol:star.fill,color:.blue)BadgeView(symbol:heart.fill,color:.red)BadgeView(symbol:leaf.fill,color:.green)}}参考Applying Liquid Glass to custom viewsLandmarks: Building an app with Liquid GlassSwiftUI View.glassEffect(_:in:isEnabled:)SwiftUI GlassEffectContainerSwiftUI GlassEffectTransitionSwiftUI GlassButtonStyle
RELATED

相关推荐

swiftui-expert-skill - sheet-navigation-patterns

swiftui-expert-skill - sheet-navigation-patterns

SwiftUI Sheet、导航与 Inspector 模式参考 目录 Sheet 模式导航模式使用 NavigationSplitView 的多列导航Inspector呈现修饰符汇总清单 Sheet 模式 项目驱动的 Sheet(首选) 呈现基于模型的内容时,使用 .sheet(item:) 而不是 .sheet(isP…

📅 2026/10/12 3:42:36
315页智慧城市方案Word排版:从样式体系到自动化改稿的完整指南

315页智慧城市方案Word排版:从样式体系到自动化改稿的完整指南

简介:这份智慧城市建设方案文档共315页,是面向政府信息化部门、智慧城市项目规划者与系统集成商的顶层设计参考。内容从项目概述、业务需求分析、功能与性能需求、建设难点及对策切入,逐步展开总体架构、技术架构、信息资源架构、开放平台与安…

📅 2026/10/12 3:42:36
写好架构决策记录(ADR)的完整指南:Context、Consequences 与不可变原则实战解析

写好架构决策记录(ADR)的完整指南:Context、Consequences 与不可变原则实战解析

【免费下载链接】architecture-decision-record Architecture decision record (ADR) examples for software planning, IT leadership, and template documentation 项目地址: https://gitcode.com/gh_mirrors/ar/architecture-decision-record 点击查看 免费下载 …

📅 2026/10/12 3:37:36
MORE NEWS

更多资讯

📰

编译原理期末复习攻略:把握词法、语法与代码生成核心考点

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

AI日报系统设计:信源过滤、语义分级与多端适配实践

1. 项目概述:这不是一份“新闻稿”,而是一套可复用的AI信息流处理系统“AI 日报(2026年10月5日)”这个标题乍看像一条社交媒体上的轻量资讯推送,但作为从业十多年、亲手搭建过二十多个垂直领域信息聚合系统的博主&…

📰

criterion.rs 的 bencher 兼容层(criterion_bencher_compat):把 bencher 基准测试平滑迁移到 Criterion.rs

开发工具性能测试 【免费下载链接】criterion.rs Statistics-driven benchmarking library for Rust 项目地址: https://gitcode.com/gh_mirrors/cr/criterion.rs 点击查看 免费下载 导读 本文聚焦 Criterion.rs 仓库中提供的 criterion_bencher_compat&#xff0…

📰

高频变压器设计:难点不在算,而在权衡

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

自动化老工程师90条实战经验:从入行到现场高手的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Docker 下搭建 Redis 集群:三主三从、故障转移与扩容实战

Docker 下搭建 Redis 集群,听起来就是拉镜像、起容器、敲一条 create 命令的事,但真正把三主三从跑起来,再经历过一次故障切换和扩容,才知道里面有不少细节是官方文档不会明确告诉你的。我会把一条完整的实操链路走完:…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬