用途:构建或评审全面对齐 iOS 26+ Liquid Glass API 的 SwiftUI 功能,优先使用原生 API(glassEffect、GlassEffectContainer、玻璃按钮样式)并遵循 Apple 设计指引,保持用量一致、该交互处可交互并关注性能。
使用路径:评审现有功能时,检查 Liquid Glass 该用与不该用的位置、修饰符顺序、形状与容器放置、iOS 26+ 可用性处理和合理回退;改进功能时,识别适合玻璃处理的组件(表面、chip、按钮、卡片),多个玻璃元素时重构为 GlassEffectContainer,仅对可点击或可聚焦元素引入交互玻璃;实现新功能时,先设计玻璃表面与交互(形状、显著性、分组),在布局/外观修饰符之后添加玻璃修饰符,仅在视图层级带动画变化时添加形变过渡。
核心准则:优先原生 Liquid Glass API 而非自定义模糊;多个玻璃元素共存时使用 GlassEffectContainer;.glassEffect(...) 放在布局与视觉修饰符之后;对响应触摸/指针的元素使用 .interactive();相关元素的形状保持一致;用 #available(iOS 26, *) 判断并提供非玻璃回退。
用法示例: 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)
检查清单:存在 #available(iOS 26, *) 与回退 UI;多个玻璃视图包在 GlassEffectContainer 中;glassEffect 位于布局/外观修饰符之后;interactive() 仅用于存在用户交互处;形变使用 glassEffectID 配合 @Namespace;形状、着色与间距在整个功能中保持一致。
限制:仅面向 iOS 26+ Liquid Glass API,需为更早版本提供回退材质与视觉;资料未提供具体性能基准、收费或价格信息。参考文档为 references/liquid-glass.md,最新 API 细节以 Apple 文档为准。