返回顶部
s

swiftui-expert-skillSwiftUI专家技能

Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, modern APIs, Swift concurrency, and iOS 26+ Liquid Glass adoption. Use when building new SwiftUI features, refactoring existing views, reviewing code quality, or adopting modern SwiftUI patterns.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
137
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

swiftui-expert-skill

SwiftUI 专家技能

概述

使用此技能来构建、审查或改进SwiftUI功能,包括正确的状态管理、现代API使用、Swift并发最佳实践、最优视图组合以及iOS 26+ Liquid Glass样式。优先使用原生API、Apple设计指南和注重性能的模式。本技能侧重于事实和最佳实践,不强制特定的架构模式。

工作流决策树

1) 审查现有SwiftUI代码

  • - 根据选择指南检查属性包装器的使用(参见 references/state-management.md)
  • 验证现代API的使用(参见 references/modern-apis.md)
  • 验证视图组合是否遵循提取规则(参见 references/view-structure.md)
  • 检查是否应用了性能模式(参见 references/performance-patterns.md)
  • 验证列表模式是否使用稳定标识(参见 references/list-patterns.md)
  • 检查动画模式的正确性(参见 references/animation-basics.md、references/animation-transitions.md)
  • 检查Liquid Glass使用的正确性和一致性(参见 references/liquid-glass.md)
  • 验证iOS 26+可用性处理,并提供合理的回退方案

2) 改进现有SwiftUI代码

  • - 审计状态管理,确保选择正确的包装器(优先使用@Observable而非ObservableObject)
  • 用现代等效API替换已弃用的API(参见 references/modern-apis.md)
  • 将复杂视图提取为单独的子视图(参见 references/view-structure.md)
  • 重构热路径以最小化冗余状态更新(参见 references/performance-patterns.md)
  • 确保ForEach使用稳定标识(参见 references/list-patterns.md)
  • 改进动画模式(使用value参数、适当的过渡,参见 references/animation-basics.md、references/animation-transitions.md)
  • 当使用UIImage(data:)时建议图像降采样(作为可选优化,参见 references/image-optimization.md)
  • 仅在用户明确要求时才采用Liquid Glass

3) 实现新的SwiftUI功能

  • - 首先设计数据流:识别自有状态与注入状态(参见 references/state-management.md)
  • 使用现代API(不使用已弃用的修饰符或模式,参见 references/modern-apis.md)
  • 对共享状态使用@Observable(如果不使用默认的Actor隔离,则配合@MainActor)
  • 为最优差异比较构建视图(尽早提取子视图,保持视图小巧,参见 references/view-structure.md)
  • 将业务逻辑分离到可测试的模型中(参见 references/layout-best-practices.md)
  • 使用正确的动画模式(隐式与显式、过渡,参见 references/animation-basics.md、references/animation-transitions.md、references/animation-advanced.md)
  • 在布局/外观修饰符之后应用玻璃效果(参见 references/liquid-glass.md)
  • 使用#available限制iOS 26+功能,并提供回退方案

核心指南

状态管理

  • - 新代码始终优先使用@Observable而非ObservableObject
  • 除非使用默认的Actor隔离,否则将@Observable类标记为@MainActor
  • 始终将@State和@StateObject标记为private(使依赖关系清晰)
  • 切勿将传入值声明为@State或@StateObject(它们只接受初始值)
  • 对@Observable类使用@State(而非@StateObject)
  • 仅在子视图需要修改父视图状态时使用@Binding
  • 对需要绑定的注入@Observable对象使用@Bindable
  • 只读值使用let;响应式读取使用var + .onChange()
  • 传统方式:自有ObservableObject使用@StateObject;注入的使用@ObservedObject
  • 嵌套的ObservableObject不起作用(需直接传递嵌套对象);@Observable可以很好地处理嵌套

现代API

  • - 使用foregroundStyle()替代foregroundColor()
  • 使用clipShape(.rect(cornerRadius:))替代cornerRadius()
  • 使用Tab API替代tabItem()
  • 使用Button替代onTapGesture()(除非需要位置/计数)
  • 使用NavigationStack替代NavigationView
  • 使用navigationDestination(for:)进行类型安全导航
  • 使用双参数或无参数的onChange()变体
  • 使用ImageRenderer渲染SwiftUI视图
  • 对基于模型的内容使用.sheet(item:)替代.sheet(isPresented:)
  • 表单应拥有自己的操作并在内部调用dismiss()
  • 使用ScrollViewReader进行带稳定ID的程序化滚动
  • 避免使用UIScreen.main.bounds进行尺寸计算
  • 当存在替代方案时避免使用GeometryReader(例如containerRelativeFrame())

Swift最佳实践

  • - 使用现代Text格式化(.format参数,而非String(format:))
  • 对用户输入过滤使用localizedStandardContains()(而非contains())
  • 优先使用静态成员查找(.blue vs Color.blue)
  • 使用.task修饰符实现异步工作的自动取消
  • 对值依赖的任务使用.task(id:)

视图组合

  • - 对状态变化优先使用修饰符而非条件视图(保持视图标识)
  • 将复杂视图提取为单独的子视图,以提高可读性和性能
  • 保持视图小巧以获得最佳性能
  • 保持视图body简单纯净(无副作用或复杂逻辑)
  • 仅对小型简单部分使用@ViewBuilder函数
  • 优先使用@ViewBuilder let content: Content而非基于闭包的内容属性
  • 将业务逻辑分离到可测试的模型中(不强制架构)
  • 操作处理程序应引用方法,而非包含内联逻辑
  • 使用相对布局而非硬编码常量
  • 视图应在任何上下文中工作(不假设屏幕尺寸或呈现样式)

性能

  • - 仅传递所需值给视图(避免大型配置或上下文对象)
  • 消除不必要的依赖以减少更新扩散
  • 在热路径中分配状态前检查值是否变化
  • 避免在onReceive、onChange、滚动处理程序中进行冗余状态更新
  • 最小化频繁执行代码路径中的工作量
  • 对大型列表使用LazyVStack/LazyHStack
  • 为ForEach使用稳定标识(动态内容绝不使用.indices)
  • 确保每个ForEach元素的视图数量恒定
  • 避免在ForEach中进行内联过滤(预过滤并缓存)
  • 避免在列表行中使用AnyView
  • 考虑使用POD视图实现快速差异比较(或将昂贵视图包装在POD父视图中)
  • 遇到UIImage(data:)时建议图像降采样(作为可选优化)
  • 避免布局抖动(深层层次结构、过多的GeometryReader)
  • 通过阈值限制频繁的几何更新
  • 使用Self._printChanges()调试意外的视图更新

动画

  • - 使用带value参数的.animation(_:value:)(不带value的已弃用版本过于宽泛)
  • 对事件驱动的动画使用withAnimation(按钮点击、手势)
  • 优先使用变换(offset、scale、rotation)而非布局变化(frame)以提高性能
  • 过渡需要在条件结构外部有动画
  • 自定义Animatable实现必须具有显式的animatableData
  • 对多步序列使用.phaseAnimator(iOS 17+)
  • 对精确时间控制使用.keyframeAnimator(iOS 17+)
  • 动画完成处理程序需要.transaction(value:)以重新执行
  • 隐式动画覆盖显式动画(视图树中后声明的生效)

Liquid Glass(iOS 26+)

仅在用户明确要求时采用。
  • - 使用原生glassEffect、GlassEffectContainer和玻璃按钮样式
  • 将多个玻璃元素包裹在GlassEffectContainer中
  • 在布局和视觉修饰符之后应用.glassEffect()
  • 仅对可点击/可聚焦元素使用.interactive()
  • 使用带@Namespace的glassEffectID实现变形过渡

快速参考

属性包装器选择(现代)
包装器使用场景
@State内部视图状态(必须为private),或自有的@Observable类
@Binding
子视图修改父视图状态 |

| @Bindable | 需要绑定的注入@Observable | | let | 来自父视图的只读值 | | var | 通过.on

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 swiftui-expert-skill-1776021848 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 swiftui-expert-skill-1776021848 技能

通过命令行安装

skillhub install swiftui-expert-skill-1776021848

下载

⬇ 下载 swiftui-expert-skill v1.0.0(免费)

文件大小: 5.63 KB | 发布时间: 2026-4-13 12:14

v1.0.0 最新 2026-4-13 12:14
Initial release of swiftui-expert-skill.

- Provides comprehensive best practices for SwiftUI state management, view composition, performance, modern API adoption, Swift concurrency, and iOS 26+ Liquid Glass support.
- Includes a workflow decision tree for reviewing, improving, and building SwiftUI features.
- Lists core guidelines for state management, modern APIs, view composition, performance optimization, animations, and Liquid Glass usage.
- Emphasizes preference for native APIs, Apple design guidance, and performance-focused patterns.
- Focuses on facts and best practices without enforcing specific architectural patterns.

Archiver·手机版·闲社网·闲社论坛·智能体自动化市场· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2026 闲社网·AI智能体论坛·AI自动化解决方案·http://xianshe.com

p2p_official_large
返回顶部