该技能用于开发 SwiftUI 界面,核心是声明式视图组合、可预测状态与安全并发。建议使用小型且按用途命名的视图,提取子视图与 ViewModifier 替代臃肿 body,优先组合而非继承;布局容器使用应用设计系统的间距。状态方面:@State 用于视图本地状态,@Binding 用于借用状态,@Observable/Observation 用于现代模型与 ViewModel,@Environment 用于横切依赖;若部署目标支持 Observation,新代码避免旧式 @ObservedObject。规则包括单一数据源、副作用放在 .task/.onChange 并支持协作取消、不在 body 中做网络请求。导航使用带类型值的 NavigationStack 与 navigationDestination,sheets/fullScreenCover 使用稳定标识,深链按解析→路由状态→栈处理,新代码避免旧式 NavigationView。并发使用 async/await 与 Task,并在 .task 中取消;用 @MainActor 保护界面状态,不阻塞主线程,错误用 throws 建模并在界面呈现失败状态。架构上若项目使用 MVVM 可应用 mvvm-architecture 技能,服务与仓库应可注入以便测试,网络与视图分离。无障碍与界面打磨包括标签、traits、Dynamic Type、触控目标与对比度,并在 accessibilityReduceMotion 时减少动画,SF Symbols 与排版层级保持一致。预览与性能:预览覆盖 loading/error/empty 等状态,避免 body 中重活,必要时使用 EquatableView 与有意识的 diffing,大列表使用 List/LazyVStack 并配稳定 id,卡顿时用 Instruments 分析。测试方面,ViewModel/服务用 XCTest,关键流程做 UI 测试,快照测试仅在项目已依赖时使用。应避免的反模式包括巨大的 ContentView、在 body 中做网络与解析、用 @State 直接存放服务器数据而无模型层、生产路径强制解包、忽略任务取消。完成标准为:状态与并发在 MainActor 上正确、导航类型化且稳定、预览覆盖主要状态、基本无障碍覆盖、happy path 与错误处理中无不必要的强制解包。
swiftui-development
编程与开发
更新于 10-15 20:31