关于 swiftui-liquid-glass
swiftui-liquid-glass 是用于实现和审查 SwiftUI 功能的 Skill,针对 iOS 26+ Liquid Glass API 提供原生效果、交互、可用性检查及旧版 iOS 的回退方案。
主要功能
- 01原生 Liquid Glass API 指南
- 02GlassEffectContainer 用法
- 03修饰符顺序与形状检查
- 04为可交互元素添加玻璃效果
- 05检查 iOS 26 可用性与回退
适用场景
- 01为 SwiftUI 组件添加玻璃效果
- 02审查现有 Liquid Glass 用法
- 03组合多个玻璃元素
- 04为较早版本 iOS 提供替代视觉效果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dimillian/ skills --skill swiftui-liquid-glass安装后在 Claude Code 中输入/swiftui-liquid-glass确认已加载。
附带文件agents/openai.yamlreferences/liquid-glass.md
详细介绍
SwiftUI Liquid Glass
概述
使用此技能构建或审查 SwiftUI 功能,确保其全面符合 iOS 26+ Liquid Glass API。优先使用原生 API(glassEffect、GlassEffectContainer、玻璃按钮样式)和 Apple 设计指南。确保用法一致、在需要时支持交互,并关注性能。
工作流决策树
选择与请求相符的路径:
1) 审查现有功能
- 检查哪些位置适合使用 Liquid Glass,哪些位置不适合。
- 验证修饰符顺序、形状用法和容器位置是否正确。
- 检查是否处理了 iOS 26+ 可用性,并提供合理的回退方案。
2) 使用 Liquid Glass 改进功能
- 确定适合应用玻璃效果的目标组件(表面、标签、按钮、卡片)。
- 多个玻璃元素同时出现时,重构为使用
GlassEffectContainer。 - 仅对可轻点或可聚焦的元素启用交互式玻璃效果。
3) 使用 Liquid Glass 实现新功能
- 首先设计玻璃表面和交互(形状、突出程度、分组方式)。
- 在布局和外观修饰符之后添加玻璃修饰符。
- 仅在视图层级随动画发生变化时添加形变过渡。
核心指南
- 优先使用原生 Liquid Glass API,而非自定义模糊效果。
- 多个玻璃元素同时存在时,使用
GlassEffectContainer。 - 在布局和视觉修饰符之后应用
.glassEffect(...)。 - 对响应触摸或指针操作的元素使用
.interactive()。 - 相关元素使用一致的形状,以保持整体观感协调。
- 使用
#available(iOS 26, *)进行版本判断,并提供非玻璃效果的回退方案。
审查清单
- 可用性:包含
#available(iOS 26, *),并提供回退 UI。 - 组合方式:多个玻璃视图由
GlassEffectContainer包裹。 - 修饰符顺序:在布局和外观修饰符之后应用
glassEffect。 - 交互性:仅在存在用户交互时使用
interactive()。 - 过渡效果:使用
@Namespace和glassEffectID实现形变。 - 一致性:功能中的形状、色调和间距保持一致。
实现清单
- 确定目标元素和所需的玻璃效果突出程度。
- 使用
GlassEffectContainer包裹分组的玻璃元素,并调整间距。 - 根据需要使用
.glassEffect(.regular.tint(...).interactive(), in: .rect(cornerRadius: ...))。 - 对操作使用
.buttonStyle(.glass)/.buttonStyle(.glassProminent)。 - 层级发生变化时,使用
glassEffectID添加形变过渡。 - 为较早版本的 iOS 提供回退材质和视觉效果。
快速代码片段
直接使用这些模式,并根据需要调整形状、色调和间距。
if #available(iOS 26, *) {
Text("Hello")
.padding()
.glassEffect(.regular.interactive(), in: .rect(cornerRadius: 16))
} else {
Text("Hello")
.padding()
.background(.ultraThinMaterial, in: RoundedRectangle(cornerRadius: 16))
}
GlassEffectContainer(spacing: 24) {
HStack(spacing: 24) {
Image(systemName: "scribble.variable")
.frame(width: 72, height: 72)
.font(.system(size: 32))
.glassEffect()
Image(systemName: "eraser.fill")
.frame(width: 72, height: 72)
.font(.system(size: 32))
.glassEffect()
}
}
Button("Confirm") { }
.buttonStyle(.glassProminent)
资源
- 参考指南:
references/liquid-glass.md - API 详情请优先参考 Apple 文档,以获取最新信息。
评论
支持 Markdown