关于 neo-swift-ui
neo-swift-ui 是面向 iOS 16 及以上 SwiftUI 项目的开发技能,适用于编写、调试和重构界面代码。它根据部署目标和状态管理方式提供现代导航、布局与数据流建议。
主要功能
- 01确认部署目标和状态管理方式
- 02规划可复用的视图层级
- 03采用现代导航与布局 API
- 04检查状态绑定、视图刷新和代码结构
适用场景
- 01将旧导航改为 NavigationStack
- 02使用现代状态管理构建 SwiftUI 界面
- 03拆分复杂视图并检查数据流
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ benknightdark/ neo-skills --skill neo-swift-ui安装后在 Claude Code 中输入/neo-swift-ui确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/anti-patterns.mdcoding-style.mdpatterns.md详细介绍
现代 SwiftUI(iOS 16+)专家技能
触发条件
- 用户要求编写、调试、重构或审查 SwiftUI 代码。
- 目标项目版本为 iOS 16 或更高版本(使用
NavigationStack、Grid等功能)。 - 开发涉及状态管理(
@State、@Observable)、自定义布局或动画。
工作流程
- 感知(版本与环境意识):
- 确认部署目标是否为 iOS 16+。
- 确定当前采用的状态管理范式(传统的
ObservableObject还是现代的@Observable)。 - 评估导航组件的使用情况(检查是否仍在使用已弃用的
NavigationView)。
- 推理(规划阶段):
- 规划视图层级,以最大限度提高可复用性并减少冗余的
body计算。 - 导航需求应使用
NavigationStack或NavigationSplitView。 - 根据数据生命周期选择合适的数据流工具(
State、Binding、Environment)。
- 规划视图层级,以最大限度提高可复用性并减少冗余的
- 执行(实施阶段):
- 遵循 SwiftUI 核心原则,编写简洁、声明式的 Swift 代码。
- 使用
Grid、ViewThatFits或自定义Layout协议实现复杂布局。 - 使用现代修饰符(例如带有
detents的.sheet)。
- 验证(标准验证):
- 检查是否存在“上帝视图”(逻辑或
body内容过多的视图),并建议拆分。 - 确保正确使用
@State和@Binding,避免不必要的视图刷新。 - 确认界面流畅,并符合 Apple 人机界面指南(HIG)。
- 检查是否存在“上帝视图”(逻辑或
功能路线图(SwiftUI 演进)
iOS 13.0 - 15.0(基础阶段)
- 声明式语法:核心
View协议和body属性。 - 状态管理:
@State、@Binding、@ObservedObject、@EnvironmentObject。 - 基础容器:
VStack、HStack、ZStack、List。 - 旧版导航:
NavigationView和NavigationLink。
iOS 16.0 - 17.0(现代阶段)
- NavigationStack:解耦且由数据驱动的导航模式。
- Observation 框架:用
@Observable宏(Swift 5.9+)替代ObservableObject。 - 高级布局:
Grid、ViewThatFits和Layout协议。 - Swift Charts:原生数据可视化框架。
iOS 18.0+(最新功能)
- SwiftUI 动画:新增基于阶段和关键帧的动画 API。
- 交互增强:改进滚动视图控件和手势处理。
编码标准
- 声明式风格:保持视图树结构清晰,避免在
body中编写复杂逻辑。 - 模块化:将子视图拆分为独立的
struct,而不是计算属性。 - 预览指南:使用
#Preview宏加快开发,并在多种环境设置下测试(深色模式、不同地区设置)。 - 类型安全:优先使用强类型导航路径和环境键。
交付内容
- 针对版本优化的代码:提供使用 iOS 16+ 功能的代码(例如
NavigationStack、presentationDetents)。 - 模块化视图组件:将大型视图拆分为职责单一、可复用的组件。
- 现代状态管理:对于支持 Swift 5.9+ 的项目,优先采用
@Observable模式。
验证
- 确保代码编译时没有警告,并针对目标版本使用最佳可用 API。
- 验证视图
body的执行效率,确保其中不包含副作用。 - 尽可能确认数据流遵循单向数据流原则。
文档
官方参考资料
内部参考资料
评论
支持 Markdown