用途
本技能为 watchOS 应用开发提供系统性指导,覆盖 SwiftUI、Watch Connectivity、表盘复杂功能(Complications)与手表专属 UI 模式。当用户构建 watchOS 应用或 Watch 扩展、咨询 iPhone 与 Watch 同步、需要复杂功能或 ClockKit 帮助、实现手表专属 UI 模式、咨询 WidgetKit 复杂功能或从 ClockKit 迁移、构建表盘复杂功能(accessoryCircular、accessoryRectangular、accessoryCorner、accessoryInline)、咨询 watchOS 上的 HealthKit、体能训练会话、心率或健身追踪、需要用于后台训练追踪的 Extended Runtime 会话、构建 watchOS 小组件或 Smart Stack 小组件、咨询小组件相关性、Smart Stack 排序或小组件建议、需要在 iOS 与 watchOS 之间跨平台共享小组件,以及咨询 watchOS 无障碍(VoiceOver、AssistiveTouch、Dynamic Type)时,均可启用本技能。
主要能力
设计原则
- Watch 优先设计:内容需可一瞥即读(用户只看几秒而非几分钟)、交互快速(2 秒以内)、仅保留必要信息、触摸目标最小高度 38pt。
- 独立应用优先:尽量构建独立 Watch 应用;Watch Connectivity 用于数据同步而非依赖;本地缓存数据以支持离线访问;优雅处理连接失败。
- 性能:减少后台工作以节省电量;谨慎使用复杂功能更新;优先基于时间线的内容而非实时更新;保持视图轻量。
watchOS 设计规则(WWDC20/23)
- 十秒测试:为约十秒的注意力设计,直接进入由位置、最近使用或频率决定的详情视图,且无需标题即可辨识。
- 三种基础布局:Dial(密集一瞥状态,最多 4 个角落控件,使用 .scenePadding(.horizontal) 对齐表圈)、Infographic(图表与指标,一个图表配辅助数字)、List(可滚动查找,用户需定位条目时使用)。
- 导航模型:优先通过数码表冠在单屏高度的页面间垂直分页,水平分页更难导航;优先使用 NavigationSplitView 的两级 Source List 模式,始终初始化选择使应用直接启动到详情,源列表保持无标题;仅在两者都不适用时使用 NavigationStack,层级导航应跨启动记住最后目的地;数码表冠锚定导航、滚动与精确输入,但始终需触摸作为后备。
- 背景与材质:背景必须承载实用性(识别或信息),而非单纯装饰;四种鲜艳全屏材质(Ultra Thin 至 Thick)搭配 Primary–Quaternary 鲜艳前景样式与鲜艳语义色,确保内容在任何背景上可读。
- 工具栏与操作按钮:工具栏位置包括 .topBarLeading、.topBarTrailing(将时间移至中央)与 .bottomBar;详情底部操作按钮最易发现,红色标签表示破坏性操作,数据不可恢复时需加确认;More 按钮(圆形容器中的省略号)仅承载次要操作,绝不承载主要操作;工具栏显示的按钮仅属于滚动视图。
无障碍(WWDC21 10223)
- Dynamic Type:watchOS 有 11 种文本样式,固定 .font(.system(size: 24)) 不会缩放,应使用 .font(.title3) 等;允许文本换行,lineLimit(1) 在无障碍尺寸下会截断;Watch 设置默认文本大小最接近配对的 iPhone 设置;换行拥挤时切换布局(通过 @Environment(.sizeCategory) 判断)。
- VoiceOver:NavigationLink 自动合并子元素的无障碍信息,不要额外分组;为图标+文本行添加标签使其读作含义;步进器/计数器应折叠为单个可调节元素,将变化数字放入 value;复杂功能与动态通知需同样处理,展开缩写,为图像复杂功能添加标签。
- AssistiveTouch:手势驱动(握拳=点击,双握拳=操作菜单,捏合=下一元素,双捏合=上一元素);光标仅聚焦交互元素;VoiceOver 自定义操作自动出现在 AssistiveTouch 操作菜单中,需通过 Label 形式提供真实图标。
架构模式
- 应用结构:使用 @main 与 WindowGroup。
- 导航:使用 NavigationStack(watchOS 9+)与 navigationDestination;TabView 配合 .tabViewStyle(.verticalPage) 用于主分区。
- 列表设计:List 配合 .listStyle(.carousel)(聚焦内容)或 .listStyle(.elliptical)(浏览)。
Watch Connectivity
- 会话设置:通过 WCSessionDelegate 管理,包含 isReachable 状态与必需委托方法。
- 数据传输方式:updateApplicationContext(最新状态,覆盖之前)、sendMessage(实时,双方应用活跃)、transferUserInfo(排队数据,保证按序)、transferFile(大数据,后台传输)。
复杂功能
- ClockKit:通过 CLKComplicationDataSource 提供描述符与时间线条目。
- WidgetKit 复杂功能(watchOS 9+):使用 StaticConfiguration 与 ComplicationProvider,支持 accessoryCircular、accessoryRectangular、accessoryCorner、accessoryInline 家族。
UI 组件
- 数码表冠:通过 .digitalCrownRotation($crownValue) 绑定。
- 触觉反馈:WKInterfaceDevice.current().play(.click/.success/.failure)。
- 正在播放:内置 NowPlayingView。
- 体能训练应用:使用 HealthKit 的 HKWorkoutSession 与 HKLiveWorkoutBuilder。
最佳实践
- 性能:watchOS 10+ 使用 @Observable 替代 ObservableObject;限制后台刷新;本地缓存图像;列表使用懒加载。
- 电量:减少位置更新;使用计划后台任务;优先复杂功能而非频繁刷新;批量网络请求。
- 用户体验:始终显示加载状态;提供触觉反馈;支持键盘输入;使用清晰图标。
- 测试:模拟器测试不同手表尺寸、验证所有家族的复杂功能、与配对 iPhone 模拟器测试 Watch Connectivity;真机测试电量影响、触觉感受与不同光照条件。
使用方式
本技能根据用户需求选择对应参考文件:iPhone 与 Watch 数据同步对应 watch-connectivity.md;表盘复杂功能对应 complications.md;健康/健身/训练追踪对应 health-fitness.md;watchOS 小组件/Smart Stack 对应 widgets-for-watch.md;通用 watchOS 应用开发对应本文件(SKILL.md)。
适用场景
适用于 watchOS 应用与扩展开发、iPhone 与 Watch 数据同步、表盘复杂功能构建与 ClockKit 至 WidgetKit 迁移、HealthKit 健身与体能训练追踪、Smart Stack 小组件与跨平台共享、watchOS 无障碍支持,以及 watchOS 代码审查与最佳实践咨询。
限制
资料未提供本技能的具体安装命令、收费方式、价格、平台支持范围或效果保证等信息。