图像设计
- 作者仓库星标 655
- 许可证 MIT
- 作者更新于 实时读取
- 作者仓库 everything-claude-code-zh
- 领域
- 设计与多媒体
- 兼容 Agent
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- 信任分
- 94 / 100 · 已通过审计
- 作者 / 版本 / 许可
- @xu-xiang · MIT
- Token 消耗评级
- 低消耗
- 接入复杂程度
- 即装即用
- 是否需要外部 API Key
- 不需要
- 兼容的系统
- 未声明(默认跨平台)
- 底层运行要求
- 无特殊要求
- 文件与系统权限
-
- 只读
- 允许写入 / 修改
- 网络行为
- 仅限本地
- 安装命令数
- 26 条
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: liquid-glass-design
description: iOS 26 灵动玻璃(Liquid Glass)设计系统 — 适用于 SwiftUI、UIKit 和 WidgetKit 的具有模糊、反射和交互式变形效果的动态玻璃材质。 实现 Apple…
category: 设计与多媒体
runtime: 无特殊运行时
---
# liquid-glass-design 输出预览
## PART A: 任务判断
- 适用问题:视觉内容、演示材料、信息图或设计交付。
- 输入要求:目标材料、限制条件、期望输出和验收方式。
- 证据边界:围绕“何时激活 / 核心模式 — SwiftUI / 基础玻璃效果”读取原文规则,不把推断写成作者承诺。
## PART B: 执行结果
- **01** 任务判断:确认你的需求是否属于视觉内容、演示材料、信息图或设计交付,并标出输入、限制和预期结果。
- **02** 执行计划:优先按“何时激活 / 核心模式 — SwiftUI / 基础玻璃效果”拆成步骤,说明每一步会读取什么、修改什么、产出什么。
- **03** 交付结果:给出可复制的命令、文件改动、检查清单或内容草稿,并说明如何继续迭代。
- **04** 风险边界:结合 读取文件、写入/修改文件、主要在本地完成、通常不需要额外 API Key 给出执行前确认项。
## Running Rules
- 读取文件、写入/修改文件;主要在本地完成;通常不需要额外 API Key。
- 先小样例验证,再放大到真实任务。
- 交付时同时给结果、检查口径和下一步迭代建议。 原文没有稳定的斜杠命令要求。安装验证后通常全局生效,直接在对话里点名这个 Skill 并描述任务即可。
告诉 Agent 目标文件或材料、期望结果、不可改范围、是否允许联网或执行命令。本 Skill 的权限画像是:读取文件、写入/修改文件。
先用一个小任务确认它会围绕“何时激活 / 核心模式 — SwiftUI / 基础玻璃效果”工作;涉及文件或命令时,先看 diff、日志、预览或测试结果。
检查最终产物是否包含明确结果、必要证据和下一步动作;如果输出泛泛而谈,就补充输入、边界和验收标准后重跑。
---
name: liquid-glass-design
description: iOS 26 灵动玻璃(Liquid Glass)设计系统 — 适用于 SwiftUI、UIKit 和 WidgetKit 的具有模糊、反射和交互式变形效果的动态玻璃材质。 实现 Apple…
category: 设计与多媒体
source: xu-xiang/everything-claude-code-zh
---
# liquid-glass-design
## 什么时候使用
- 把设计与视觉方向的常用动作沉淀成 Agent 可调用的技能 适合处理界面、视觉、封面、信息图或演示材料交付,核心价值是把输入、判断、执行、验证和交付边界固定下来,避免 Agent 泛泛回答。 把任务拆成可执行、可检查、可继续迭代的步骤…
- 面向视觉内容、演示材料、信息图或设计交付,优先处理能明确输入、步骤和验收标准的工作。
## 需要提供什么
- 目标材料、目录范围、期望结果和不可改动内容。
- 是否允许联网、执行命令、读写文件或调用外部服务。
## 执行规则
- 围绕「何时激活 / 核心模式 — SwiftUI / 基础玻璃效果」组织步骤,不把推断写成作者事实。
- 读取文件、写入/修改文件;主要在本地完成;通常不需要额外 API Key。
- 先跑小样例,确认结果可检查后再扩大任务范围。
## 输出要求
- 给出最终产物、关键证据、验证方式和下一步动作。
- 信息不足时标记 unknown,不编造命令、平台或依赖。 作者原文负责流程事实;仓库文件负责来源和命令;流狐只补充适用场景、限制和质量判断。
skill "liquid-glass-design" {
输入层 -> 用户目标 + 目标文件 + 禁止范围 + 验收标准
上下文层 -> 何时激活 / 核心模式 — SwiftUI / 基础玻璃效果
规则层 -> SKILL.md 触发条件 / 执行顺序 / 输出格式
运行层 -> 无特殊运行时 | 读取文件、写入/修改文件 | 主要在本地完成
安全层 -> 通常不需要额外 API Key + 小任务验证 + diff / 日志复核
输出层 -> 可复制结果 + 检查清单 + 下一步迭代
} 灵动玻璃(Liquid Glass)设计系统 (iOS 26)
实现 Apple 灵动玻璃(Liquid Glass)的设计模式 — 这是一种动态材质,可以模糊背后的内容,反射周围内容的颜色和光影,并对触摸和指针交互做出反应。涵盖了 SwiftUI、UIKit 和 WidgetKit 的集成。
何时激活
- 为 iOS 26+ 构建或更新采用新设计语言的应用
- 实现玻璃风格的按钮、卡片、工具栏或容器
- 在玻璃元素之间创建变形(Morphing)过渡
- 为小组件(Widgets)应用灵动玻璃效果
- 将现有的模糊/材质效果迁移到新的灵动玻璃 API
核心模式 — SwiftUI
基础玻璃效果
为任何视图添加灵动玻璃效果的最简单方法:
Text("Hello, World!")
.font(.title)
.padding()
.glassEffect() // 默认:常规变体,胶囊形状
自定义形状和色调(Tint)
Text("Hello, World!")
.font(.title)
.padding()
.glassEffect(.regular.tint(.orange).interactive(), in: .rect(cornerRadius: 16.0))
关键自定义选项:
.regular— 标准玻璃效果.tint(Color)— 添加颜色提亮以突出显示.interactive()— 响应触摸和指针交互- 形状:
.capsule(默认)、.rect(cornerRadius:)、.circle
玻璃按钮样式
Button("Click Me") { /* 操作 */ }
.buttonStyle(.glass)
Button("Important") { /* 操作 */ }
.buttonStyle(.glassProminent)
适用于多元素的 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 参数控制合并距离 — 越近的元素其玻璃形状会融合在一起。
联合玻璃效果
使用 glassEffectUnion 将多个视图合并为一个玻璃形状:
@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.0, height: 80.0)
.glassEffect()
.glassEffectUnion(id: item < 2 ? "group1" : "group2", namespace: namespace)
}
}
}
变形(Morphing)过渡
在玻璃元素出现/消失时创建平滑的变形:
@State private var isExpanded = false
@Namespace private var namespace
GlassEffectContainer(spacing: 40.0) {
HStack(spacing: 40.0) {
Image(systemName: "scribble.variable")
.frame(width: 80.0, height: 80.0)
.glassEffect()
.glassEffectID("pencil", in: namespace)
if isExpanded {
Image(systemName: "eraser.fill")
.frame(width: 80.0, height: 80.0)
.glassEffect()
.glassEffectID("eraser", in: namespace)
}
}
}
Button("Toggle") {
withAnimation { isExpanded.toggle() }
}
.buttonStyle(.glass)
在侧边栏下方延伸水平滚动
要允许水平滚动内容延伸到侧边栏或检查器(Inspector)下方,请确保 ScrollView 内容触及容器的领先/尾随(leading/trailing)边缘。当布局延伸到边缘时,系统会自动处理侧边栏下方的滚动行为 — 无需额外的修饰符。
核心模式 — UIKit
基础 UIGlassEffect
let glassEffect = UIGlassEffect()
glassEffect.tintColor = UIColor.systemBlue.withAlphaComponent(0.3)
glassEffect.isInteractive = true
let visualEffectView = UIVisualEffectView(effect: glassEffect)
visualEffectView.translatesAutoresizingMaskIntoConstraints = false
visualEffectView.layer.cornerRadius = 20
visualEffectView.clipsToBounds = true
view.addSubview(visualEffectView)
NSLayoutConstraint.activate([
visualEffectView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
visualEffectView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
visualEffectView.widthAnchor.constraint(equalToConstant: 200),
visualEffectView.heightAnchor.constraint(equalToConstant: 120)
])
// 向 contentView 添加内容
let label = UILabel()
label.text = "Liquid Glass"
label.translatesAutoresizingMaskIntoConstraints = false
visualEffectView.contentView.addSubview(label)
NSLayoutConstraint.activate([
label.centerXAnchor.constraint(equalTo: visualEffectView.contentView.centerXAnchor),
label.centerYAnchor.constraint(equalTo: visualEffectView.contentView.centerYAnchor)
])
适用于多元素的 UIGlassContainerEffect
let containerEffect = UIGlassContainerEffect()
containerEffect.spacing = 40.0
let containerView = UIVisualEffectView(effect: containerEffect)
let firstGlass = UIVisualEffectView(effect: UIGlassEffect())
let secondGlass = UIVisualEffectView(effect: UIGlassEffect())
containerView.contentView.addSubview(firstGlass)
containerView.contentView.addSubview(secondGlass)
滚动边缘效果(Scroll Edge Effects)
scrollView.topEdgeEffect.style = .automatic
scrollView.bottomEdgeEffect.style = .hard
scrollView.leftEdgeEffect.isHidden = true
工具栏玻璃集成
let favoriteButton = UIBarButtonItem(image: UIImage(systemName: "heart"), style: .plain, target: self, action: #selector(favoriteAction))
favoriteButton.hidesSharedBackground = true // 选择不使用共享玻璃背景
核心模式 — WidgetKit
渲染模式检测
struct MyWidgetView: View {
@Environment(\.widgetRenderingMode) var renderingMode
var body: some View {
if renderingMode == .accented {
// 强调色模式:白色色调、主题化的玻璃背景
} else {
// 全色模式:标准外观
}
}
}
用于视觉层级的强调组(Accent Groups)
HStack {
VStack(alignment: .leading) {
Text("Title")
.widgetAccentable() // 强调组
Text("Subtitle")
// 主要组(默认)
}
Image(systemName: "star.fill")
.widgetAccentable() // 强调组
}
强调色模式下的图像渲染
Image("myImage")
.widgetAccentedRenderingMode(.monochrome)
容器背景
VStack { /* 内容 */ }
.containerBackground(for: .widget) {
Color.blue.opacity(0.2)
}
关键设计决策
| 决策 | 理由 |
|---|---|
| 使用 GlassEffectContainer 包裹 | 性能优化,支持玻璃元素之间的变形过渡 |
spacing 参数 |
控制合并距离 — 微调元素融合所需的接近程度 |
@Namespace + glassEffectID |
支持在视图层级变化时实现平滑的变形过渡 |
interactive() 修饰符 |
显式开启触摸/指针反应 — 并非所有玻璃都应有响应 |
| UIKit 中的 UIGlassContainerEffect | 与 SwiftUI 保持一致的容器模式 |
| 小组件中的强调渲染模式 | 当用户选择强调色主屏幕时,系统会应用色调玻璃 |
最佳实践
- 始终使用 GlassEffectContainer:当对多个兄弟视图应用玻璃效果时,它可以启用变形效果并提高渲染性能。
- 在其他外观修饰符(frame, font, padding)之后应用
.glassEffect()。 - 仅在响应用户交互的元素上使用
.interactive()(如按钮、可切换项目)。 - 仔细选择容器间距:以控制玻璃效果何时合并。
- 使用
withAnimation:在更改视图层级时使用,以启用平滑的变形过渡。 - 在不同外观下进行测试:包括浅色模式、深色模式以及强调色/色调模式。
- 确保无障碍对比度:玻璃上的文字必须保持清晰可读。
应避免的反模式
- 在没有 GlassEffectContainer 的情况下使用多个独立的
.glassEffect()视图。 - 嵌套过多的玻璃效果:会降低性能和视觉清晰度。
- 为每个视图都应用玻璃效果:应保留给交互元素、工具栏和卡片。
- 在 UIKit 中使用圆角时忘记设置
clipsToBounds = true。 - 忽略小组件中的强调渲染模式:这会破坏强调色主屏幕的外观。
- 在玻璃背后使用不透明背景:这会破坏半透明效果。
何时使用
- 采用新 iOS 26 设计的导航栏、工具栏和标签栏。
- 悬浮操作按钮和卡片式容器。
- 需要视觉深度和触摸反馈的交互式控件。
- 应该与系统灵动玻璃外观集成的小组件。
- 相关 UI 状态之间的变形过渡。
先判断是否适合
作者设计意图
作者的方法与取舍
边界和复核