关于 liquid-glass-motion
liquid-glass-motion 是一项配套技能,涵盖 SwiftUI 中 Liquid Glass 的运动、动画和着色器。它为编码 Agent 提供实现约束和主题参考,并附带用于记录和分析 Instruments 跟踪数据的脚本。
主要功能
- 01Liquid Glass 动画规则指南
- 02运动与转场主题参考
- 03滚动驱动运动指南
- 04Metal 着色器指南
- 05减少动态效果的无障碍规则
- 06Instruments 跟踪记录与分析
适用场景
- 01实现 Liquid Glass 形变
- 02构建滚动驱动的 SwiftUI 动效
- 03选择动画和转场方案
- 04分析动画卡顿及 SwiftUI 性能
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ yordilorenzo/ liquid-glass-skills --skill liquid-glass-motion安装后在 Claude Code 中输入/liquid-glass-motion确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
ATTRIBUTION.mdreferences/animation-fundamentals.mdmetal-and-glass.mdmorphing.mdperformance-and-instrumentation.mdphase-and-keyframe.mdreduce-motion.mdscroll-driven.mdtransitions-and-navigation.mdscripts/analyze_trace.pyLICENSE-AvdLee-SwiftUI-Agent-Skillrecord_trace.pyscripts/instruments_parser/__init__.pycauses.pycorrelate.pyevents.pyhangs.pyhitches.pysummary.pyswiftui.pytime_profiler.pyxctrace.pyxml_utils.py详细介绍
Liquid Glass — 动态、动画与着色器
配套 liquid-glass 技能(~/.claude/skills/liquid-glass/)。标签系统相同:
[verified] / [apple] / [multi] / [single] / [version-pinned] — 参见该技能的
SKILL.md。编写于 2026-08,并已根据 Apple 文档和 SDK 接口验证。
操作规则
- 生成代码前,务必先阅读配套 liquid-glass 技能(与本技能一同安装)中的可用性防护规则:
references/availability-and-sdk27.md。动态代码也会触发相同的 SDK-27 变更(禁止使用.if、@ContentBuilder、重命名)。 - 通过路由器按需加载参考资料——一个主题,一个文件。
- 动态模型:Liquid Glass 及其动态效果是协同设计的。玻璃不会淡入淡出,而是通过调节透镜效果逐渐显现;玻璃变大时,其材质也会变厚(阴影更深、透镜效果更强)。尺寸变化就是材质变化,因此形变必须使用系统动画,不能手动伪造。
- 重述动态效果相关说法前,请先对照
references/验证——流传的说明中有不少事实错误;这些文件中记录了更正后的信息。 - 性能分析证据胜过推测:优化前先用
xctrace录制 Instruments 跟踪记录;切勿相信 iOS Simulator 上的 SwiftUI instrument——参见references/performance-and-instrumentation.md。
硬性规则(简要列表)
- 绝不要用
.opacity/ 淡入淡出动画来呈现玻璃——应使用glassEffectTransition(.materialize是获准使用的类似淡入效果的选项)。[multi] - 形变若要生效,必须同时满足以下四项,否则会静默地无效:使用同一个
GlassEffectContainer;每个元素都在同一个共享的@Namespace中具有glassEffectID;变化是视图的插入/移除(不是值变化);状态变化位于withAnimation内。此外还须满足几何条件:容器内最近边缘的间距不超过spacing。[multi] - 交互式“挤压”只有一个布尔开关——
.interactive()。没有公开的弹簧/阻尼/刚度调节参数;不要承诺可以调节果冻效果。[multi] - 所有玻璃动画都必须受
accessibilityReduceMotion控制——默认形变是一种动态效果,减少动态效果的用户曾觉得它像闪烁。系统不会替你控制withAnimation。[multi] - 每个属性只使用一种动画来源——绝不要在同一属性上混用隐式
.animation、withAnimation和滚动驱动的更新。视图树中靠后的隐式动画会静默覆盖显式动画。[multi] - 动画上下文必须位于条件判断之外——放在
if内的.animation()会随视图一同销毁,移除操作因此不会播放动画。[multi] - 对于滚动动态效果,优先使用渲染器端方案:选用
scrollTransition/visualEffect(in:),而不是通过可观察的滚动偏移量传递状态。[apple] - 优先为变换添加动画(缩放/偏移/旋转),其次为尺寸框架,最后才处理标识变化。[multi]
主题路由器
| 主题 | 参考资料 |
|---|---|
| 弹簧、曲线、优先级、Transaction、@Animatable、CA 桥接 | references/animation-fundamentals.md |
| 玻璃形变、glassEffectID、并集、glassEffectTransition | references/morphing.md |
| 导航缩放、自定义 Transition、工作表、触控与触控板 | references/transitions-and-navigation.md |
| 滚动驱动的动态效果、scrollTransition、visualEffect、界面装饰交互 | references/scroll-driven.md |
| PhaseAnimator、KeyframeAnimator、符号效果 | references/phase-and-keyframe.md |
| 减少动态效果控制、替代方案表格 | references/reduce-motion.md |
| 与玻璃结合、叠加于玻璃之上或替代玻璃的 Metal 着色器 | references/metal-and-glass.md |
| 性能模型、xctrace 性能分析 | references/performance-and-instrumentation.md |
| 静态玻璃、可用性、工具栏、平台 API、材质的辅助功能 | liquid-glass 技能 |
| 选择具体的弹簧/阻尼/时长数值 | apple-motion-feel 技能 |
脚本
scripts/record_trace.py 和 scripts/analyze_trace.py(以及 instruments_parser/)——引入自 Antoine van der Lee 的 SwiftUI-Agent-Skill(MIT;许可证随附于同目录下的 scripts/LICENSE-AvdLee-SwiftUI-Agent-Skill)。录制并解析 Instruments 跟踪记录(Time Profiler、Hangs、Animation Hitches、SwiftUI lanes),输出为 JSON/Markdown。用法和解读说明见:references/performance-and-instrumentation.md。
评论
支持 Markdown