Appearance
Liquid Glass Design Skill 是 Everything Claude Code 针对 iOS 26 全新 Liquid Glass 动态玻璃材质的系统级实现方案,覆盖 SwiftUI、UIKit 与 WidgetKit。它解决了传统模糊/毛玻璃效果难以实现动态融合、交互反馈和高性能渲染的问题,提供多元素融合、流畅形变、交互响应和可访问性最佳实践,助力开发者快速构建 iOS 26 风格的现代 UI。本文将详解 Skill 的激活场景、完整使用流程、常见输出、与其他 Agent/Skill 的协作方式及注意事项。
Everything Claude Code Liquid Glass Design Skill:iOS 26 动态玻璃材质、反射与交互形变 SwiftUI 实现
iOS 26 引入了全新的 Liquid Glass 设计语言,带来了动态模糊、环境反射和交互形变等视觉体验。对于希望快速适配 iOS 26 风格的开发者而言,Liquid Glass Design Skill 提供了一套系统化的 SwiftUI/ UIKit/ WidgetKit 实现范式,极大简化了复杂玻璃材质的开发难题。
本指南将结合生产实战经验,详细讲解如何用好 Liquid Glass Design Skill,提升你的 AI 辅助开发效率和 UI 质量。更多 Claude Code Skills 体系与自动化 Hook 的整体介绍,推荐阅读 Everything Claude Code 完全指南 和 Claude Code 快速上手指南。
1. 这个 Skill 能解决什么问题?
传统做法的痛点:
- 旧版毛玻璃(UIBlurEffect/Material)仅支持静态模糊,难以动态融合、响应交互。
- 多个独立玻璃视图无法平滑合并,性能瓶颈明显。
- 交互反馈、色彩反射和形变动画需大量手写代码,难以维护。
- WidgetKit、SwiftUI、UIKit 三套体系体验割裂,API 不统一。
Liquid Glass Design Skill 的优势:
- 一行代码即可为任意 SwiftUI 视图添加动态玻璃材质(含模糊、反射、交互形变)。
- 提供 GlassEffectContainer/ UIGlassContainerEffect,支持多元素融合、流畅 morphing 动画。
- 支持 .interactive() 交互反馈、.tint() 色彩强调、.glassEffectUnion 分组融合等高级特性。
- 完美兼容 WidgetKit 的渲染模式与可访问性,适配 iOS 26 全新系统风格。
2. 什么时候会自动激活/推荐使用?
- 新建或升级 iOS 26+ 应用,采用 Liquid Glass 视觉语言。
- 需要实现玻璃风格的按钮、卡片、工具栏、浮动容器等 UI。
- 多个玻璃元素需要融合、形变(如卡片展开/收起、动态分组)。
- Widget 需要与系统玻璃风格无缝融合,适配浅色/深色/高亮模式。
- 迁移旧有 blur/material 代码到 iOS 26 Liquid Glass API。
3. 实际项目中的完整使用流程(Step by Step)
Step 1:为单个视图添加 Liquid Glass 效果
最简单的用法,只需一行:
swift
Text("Hello, World!")
.font(.title)
.padding()
.glassEffect() // 默认 regular,胶囊形状效果:自动获得动态模糊、环境色彩反射和玻璃高光。
Step 2:自定义形状、色彩和交互反馈
swift
Text("Hello, World!")
.font(.title)
.padding()
.glassEffect(.regular.tint(.orange).interactive(), in: .rect(cornerRadius: 16.0)).regular:标准玻璃风格.tint(.orange):高亮色彩强调.interactive():支持触摸/指针交互反馈.rect(cornerRadius: 16.0):自定义圆角矩形形状
Step 3:为按钮/卡片等控件批量应用玻璃风格
swift
Button("点击我") { /* action */ }
.buttonStyle(.glass)
Button("重要操作") { /* action */ }
.buttonStyle(.glassProminent).glassProminent适用于主操作,强调视觉层级。
Step 4:多元素融合与性能优化
多个玻璃元素需用 GlassEffectContainer 包裹,才能实现形变融合与高性能渲染:
swift
GlassEffectContainer(spacing: 40.0) {
HStack(spacing: 40.0) {
Image(systemName: "scribble.variable")
.frame(width: 80, height: 80)
.glassEffect()
Image(systemName: "eraser.fill")
.frame(width: 80, height: 80)
.glassEffect()
}
}spacing控制融合距离,越近越容易合并为一个玻璃形状。
Step 5:分组融合与动态形变(Morphing)
1. 多组玻璃元素融合
swift
@Namespace private var namespace
GlassEffectContainer(spacing: 20.0) {
HStack(spacing: 20.0) {
ForEach(symbolSet.indices, id: \.self) { item in
Image(systemName: symbolSet[item])
.frame(width: 80, height: 80)
.glassEffect()
.glassEffectUnion(id: item < 2 ? "group1" : "group2", namespace: namespace)
}
}
}glassEffectUnion可将不同分组的元素融合为独立玻璃形状。
2. 动态形变过渡动画
swift
@State private var isExpanded = false
@Namespace private var namespace
GlassEffectContainer(spacing: 40.0) {
HStack(spacing: 40.0) {
Image(systemName: "scribble.variable")
.frame(width: 80, height: 80)
.glassEffect()
.glassEffectID("pencil", in: namespace)
if isExpanded {
Image(systemName: "eraser.fill")
.frame(width: 80, height: 80)
.glassEffect()
.glassEffectID("eraser", in: namespace)
}
}
}
Button("切换") {
withAnimation { isExpanded.toggle() }
}
.buttonStyle(.glass)- 利用
@Namespace和glassEffectID,实现玻璃元素的平滑合并/拆分动画。
Step 6:UIKit 与 WidgetKit 场景
UIKit 用法
swift
let glassEffect = UIGlassEffect()
glassEffect.tintColor = UIColor.systemBlue.withAlphaComponent(0.3)
glassEffect.isInteractive = true
let visualEffectView = UIVisualEffectView(effect: glassEffect)
visualEffectView.layer.cornerRadius = 20
visualEffectView.clipsToBounds = true- 多元素融合用
UIGlassContainerEffect。
WidgetKit 用法
swift
struct MyWidgetView: View {
@Environment(\.widgetRenderingMode) var renderingMode
var body: some View {
if renderingMode == .accented {
// 高亮玻璃背景
} else {
// 普通模式
}
}
}- 支持
.widgetAccentable()分组强调,.widgetAccentedRenderingMode(.monochrome)控制图片渲染。
4. 输出示例
典型输出(SwiftUI 代码):
swift
GlassEffectContainer(spacing: 32) {
VStack(spacing: 24) {
Text("主标题")
.font(.largeTitle)
.glassEffect(.regular.tint(.purple).interactive(), in: .rect(cornerRadius: 20))
HStack(spacing: 16) {
Button("操作1") { ... }
.buttonStyle(.glass)
Button("操作2") { ... }
.buttonStyle(.glassProminent)
}
}
}预期效果:
- 主标题和按钮均为动态玻璃材质,支持交互反馈。
- 多按钮自动融合为一体,动画流畅。
- 兼容深色/浅色/高亮模式,性能优异。
5. 常见配套 Agent 与 Skill 协作
- 与 SwiftUI Patterns Skill 协作,统一管理 SwiftUI 现代最佳实践。
- 与 Design System Skill 配合,批量生成/审查设计系统组件的玻璃风格一致性。
- 与 Verification Loop Skill 结合,自动验证 UI 在不同模式下的可访问性和对比度。
- 可通过自动化 Hook(如 Everything Claude Code Hooks 实战),在 PR 或 UI 变更时自动建议玻璃风格升级。
6. 最佳实践与注意事项
- 多元素务必用 GlassEffectContainer 包裹,否则无法融合和形变,且性能下降。
.glassEffect()应在 frame/font/padding 等修饰符之后调用。.interactive()只用于可交互元素,避免无意义的反馈动画。- WidgetKit 场景下,务必检测
renderingMode,保证高亮模式下视觉一致。 - UIKit 下有圆角时,必须
clipsToBounds = true,否则玻璃溢出。 - 不要滥用玻璃材质,优先用于主操作、卡片、工具栏等核心区域。
FAQ
Q: 旧项目如何平滑迁移到 Liquid Glass Design Skill?
A: 直接用 .glassEffect() 替换原有的 blur/material 修饰符,并根据需要引入 GlassEffectContainer 和相关参数,绝大多数代码可无缝迁移。
Q: 多个玻璃元素为何必须用 GlassEffectContainer?
A: 只有容器包裹时,系统才能高效合并渲染区域,实现流畅的形变动画和性能优化,避免视觉割裂和卡顿。
Q: 如何保证玻璃上的文本可读性?
A: 建议配合 .tint() 提高对比度,并在深色/高亮模式下多端测试,必要时调整字体颜色或加阴影,确保可访问性达标。