设计和构建 watchOS 10 app
Design and build apps for watchOS 10
2023年6月5日
一句话判断
watchOS 10 的设计核心是”抬起手腕的那十秒钟”——信息聚焦、Digital Crown 驱动、全屏色彩。
这场 Session 讲了什么
watchOS 10 是 Apple Watch 的第十个大版本,带来了全面的界面重设计。设计理念围绕三个核心:呈现当下最相关的信息、通过 Digital Crown 导航、用全屏色彩和图片庆祝屏幕的形状和保真度。
新的导航范式包括 NavigationSplitView(详情视图在上,源列表一键可达)和 TabView 的垂直翻页样式。Weather app 是 NavigationSplitView 的典型应用——直接进入当天天气,一键切换城市列表。Activity app 展示了 TabView 的垂直翻页——每个运动环是一个 tab,滚动到最后是运动历史列表。
TabView 的新能力令人印象深刻:单个 tab 可以展开和调整大小,支持本地化文本和大字体。Activity 的运动环动画是通过 matchedGeometryEffect 驱动的——滚动到特定 tab 时,环从 TabView 缩放到左上角。
值得深挖的点
“Apple Watch Moment” 的设计理念很有启发性。如果你只有用户抬起手腕后十秒钟的注意力,你会展示什么信息?Weather 直接展示今天天气,News 聚焦五条头条,Heart Rate 先显示数值再展示全屏动画。
Smart Stack 是 watchOS 10 的另一项重要功能。转动 Digital Crown,智能排序的小部件会弹出到屏幕上。设计 app 时可以从”哪些信息适合做成 Smart Stack 小部件”开始思考,然后围绕这些即时信息构建 app 架构。
代码片段
// NavigationSplitView - watchOS 版本
NavigationSplitView {
// 源列表(城市列表等)
List(cities) { city in
NavigationLink(city.name, value: city)
}
} detail: {
// 详情视图(天气等)
WeatherDetail(city: selectedCity)
}
// 始终初始化 selection,自动进入详情视图
// TabView 垂直翻页
TabView(selection: $selectedTab) {
ForEach(rings) { ring in
RingDetailView(ring: ring)
}
}
.tabViewStyle(.verticalPage)
// 使用 matchedGeometryEffect 驱动动画
@Namespace var ringNamespace
// 在 TabView 和 NavigationBar 中使用相同的 namespace
// 实现运动环的无缝过渡动画
.matchedGeometryEffect(id: "ring", in: ringNamespace)
// 滚动列表自动扩展 TabView
TabView {
TabViewContent {
// 单屏内容
}
TabViewContent {
// 这个 tab 包含滚动列表
List(exercises) { exercise in
// 列表自动扩展 tab
}
}
}
最佳实践
- 从”抬起手腕十秒钟”的角度思考 app 设计
- 将导航锚定到 Digital Crown
- 用 NavigationSplitView 展示源列表+详情
- TabView 的垂直翻页是新推荐范式
- 使用 containerBackground modifier 实现无缝过渡
还有什么值得关注
- Smart Stack 让信息主动找到用户
- 源列表不需要标题和关闭按钮,腾出更多空间
- 参考 “Design widgets for the Smart Stack” 了解小部件设计
- 颜色和材质在 watchOS 10 中有新的应用方式