用途
该技能面向 SwiftUI 开发,用于在 iOS 26 及以上版本中实现、审查或改进采用 Liquid Glass API 的界面功能。目标是对齐 iOS 26+ 的 Liquid Glass 设计体系,优先使用原生 API(glassEffect、GlassEffectContainer、玻璃按钮样式)并遵循 Apple 设计指南,保持用法一致、在需要处提供交互,并关注性能。
主要能力
技能覆盖 Liquid Glass 的核心 API 使用方式:
- 核心修饰符:
glassEffect(_:in:isEnabled:),默认形状为 capsule。 - 玻璃变体(仅有三种):
.regular用于标准导航元素、工具栏、标签页;.clear用于媒体丰富背景上的轻量浮动控件;.identity表示无效果,用于条件切换(如无障碍)。注意:不存在.prominent变体;若需强调样式,只能在按钮上使用.buttonStyle(.glassProminent)。 - 形状:
.capsule(默认)、.circle、.ellipse、.rect(cornerRadius:)(支持.containerConcentric自动匹配父级圆角)以及任意自定义 Shape。 - 着色:如
.glassEffect(.regular.tint(.blue))。 - 交互性(仅 iOS):
.glassEffect(.regular.interactive()),可启用缩放、弹跳、闪烁、触点高亮与手势响应。
技能还给出工作流决策树,区分三类任务:审查现有功能、改进使用 Liquid Glass 的功能、实现新的 Liquid Glass 功能。
使用方式
技能提供一套核心准则与清单:
核心准则包括:优先使用原生 Liquid Glass API 而非自定义模糊;多个玻璃元素共存时使用 GlassEffectContainer;在布局和视觉修饰符之后应用 .glassEffect(...);对响应触摸/指针的元素使用 .interactive();相关元素保持形状一致;用 #available(iOS 26, *) 加以限制并提供非玻璃回退;玻璃不能采样其他玻璃,应使用容器而非堆叠玻璃层;玻璃上的文本会自动获得鲜艳度处理与对比度调整;不要添加自定义阴影或边框,系统会处理边缘效果。
审查清单涵盖:可用性判断与回退、变体使用是否正确(只用 .regular、.clear、.identity)、多个玻璃视图是否包裹在 GlassEffectContainer 中、修饰符顺序、交互性使用位置、是否用 glassEffectID 配合 @Namespace 实现形变过渡、是否用 glassEffectUnion 对相关控件分组、形状/着色/间距是否一致、是否避免手动阴影边框、无障碍(系统自动适配 Reduce Transparency,可用 .identity 作为手动回退)。
实现清单则给出操作步骤:定义目标元素与玻璃变体(多数用 .regular,媒体叠加用 .clear);将成组的玻璃元素包裹进 GlassEffectContainer 并调整间距;按需使用 .glassEffect(.regular.tint(...).interactive(), in: .rect(cornerRadius: ...));用 .buttonStyle(.glass) / .buttonStyle(.glassProminent) 表示操作;用 glassEffectUnion(id:namespace:) 将相关控件合并为一个玻璃形状;在层级变化时用 glassEffectID 添加形变过渡;为旧版 iOS 提供回退材质与视觉;用 tabViewBottomAccessory 提供常驻浮动控件(如正在播放)。
技能还包含多个快速代码片段:带回退的基础玻璃、含多个元素的容器、玻璃按钮、合并(Union)控件、形变过渡、标签栏底部附件、从工具栏形变的 sheet、侧边栏背景扩展、滚动扩展至侧边栏下方、无障碍感知玻璃。
适用场景
适用于新建 SwiftUI 界面并采用 Liquid Glass 风格、重构已有组件以迁移到 iOS 26 设计、审查现有代码是否符合 Liquid Glass 规范等场景,例如导航栏、工具栏、标签页、浮动控件、按钮、媒体叠加控件、正在播放栏、合并的缩放控件等。
限制
仅适用于 iOS 26+,需用 #available(iOS 26, *) 判断并提供非玻璃回退。玻璃仅用于导航层,不应用于列表项/内容。不可堆叠玻璃层或叠加采样玻璃。玻璃变体只有三种,没有 .prominent。不应在玻璃上手动添加阴影或边框。具体平台兼容性、价格与效果等未在资料中提及的部分暂未提供。