适用范围:所有页面和组件。本文档是视觉决策的唯一依据,具体实现以此为准。
| 场景 | Light | Dark |
|---|---|---|
| 主背景 | #F0EFF4(冷紫白) |
#16151A(深紫灰) |
| 次级表面(sheet、card) | #FFFFFF opacity 0.75 |
#FFFFFF opacity 0.07 |
| topbar / 导航栏 | 主背景色 + blur material | 主背景色 + blur material |
不使用系统默认的 systemGroupedBackground 或 systemBackground。Light/Dark 统一用上表指定值。
| 用途 | 值 |
|---|---|
| 主 Accent | #9B6B2F(暖金,Light)/ #CC9B6D(暖金,Dark) |
| Accent tint 背景 | Accent opacity 0.10 |
| Accent 描边 | Accent opacity 0.28 |
系统蓝(Color.accentColor / #007AFF)不再用于高亮和激活态。全局替换为暖金。
| 层级 | Light | Dark |
|---|---|---|
| 主文字 | #1C1C1E |
rgba(255,255,255,0.92) |
| 次要文字(IPA、翻译、label) | rgba(60,60,67,0.45) |
rgba(255,255,255,0.32) |
| 极弱文字(翻译句、hint) | rgba(60,60,67,0.32) |
rgba(255,255,255,0.22) |
| 状态 | 颜色 | 用途 |
|---|---|---|
| Favorite mode | Color.green opacity 0.12(背景 tint) |
仅背景,不用于控件 |
| Focus mode | Accent tint | 仅背景,不用于控件 |
| 连续天数 | #FF9500 |
仅 streak 数字 |
| 错误 | Color.red |
仅 loadError |
- 背景:透明
- 描边:
0.5pt,rgba(60,60,67,0.10)(Light)/rgba(255,255,255,0.08)(Dark) - 圆角:
12pt - icon:
.title2,次要文字色 - label:
.caption2,次要文字色
- 背景:Accent tint(opacity 0.10)
- 描边:Accent opacity 0.28
- icon + label:Accent 色
- 不改变尺寸,不加粗,不加阴影
- 移除所有
Color(.secondarySystemGroupedBackground)填充 toggleCell和controlCell统一用上述规范- Speed、Repeats 格子同样遵守,数字用主文字色,label 用次要文字色
Token chip 是全 app 最核心的视觉元素,设计目标是「轻」。
- emoji:
22pt(从 44pt 缩小) - 单词(spelling):
.title3,主文字色,weight: .medium - IPA:
.caption,次要文字色,italic - 翻译:
.caption,次要文字色
- 背景:
rgba(255,255,255,0.06)(Dark)/rgba(255,255,255,0.75)(Light) - 描边:
0.5pt,rgba(255,255,255,0.09)(Dark)/rgba(60,60,67,0.10)(Light) - 圆角:
12pt
- 背景:Accent tint(opacity 0.12)
- 描边:Accent opacity 0.28
- 单词颜色:Accent 色
- 移除蓝色边框(
Color.bluestroke)
- 背景:Accent tint(opacity 0.18)
- 描边:Accent opacity 0.35
- 单词颜色:Accent 色(略深)
- 高度:
36pt(保持不变) - 背景:
.ultraThinMaterial,底部加0.5pt分隔线,颜色rgba(0,0,0,0.06)(Light)/rgba(255,255,255,0.06)(Dark) - streak 数字:
#FF9500,.system(size:13, weight:.semibold) - 糖果余额:次要文字色,同字号
- 背景:
rgba(60,60,67,0.06)(Light)/rgba(255,255,255,0.07)(Dark) - 描边:
0.5pt,rgba(60,60,67,0.10)(Light)/rgba(255,255,255,0.09)(Dark) - 文字:次要文字色,
system(size:10, weight:.medium) - 激活态:Accent tint 背景 + Accent 描边 + Accent 文字色
- 背景:
.ultraThinMaterial - 形状:
Circle() - icon 颜色:
- 普通模式菜单按钮:主文字色
- Focus mode xmark:Accent 色
- Favorite mode xmark:
Color.green
- 不改变现有交互逻辑
- 背景:跟随系统 material,无需手动设置背景色
- 按钮颜色:可用/不可用态改为 Accent 色 / 次要文字色
- 数字显示:主文字色,monospaced
- 不用系统默认灰:
Color(.secondarySystemGroupedBackground)、Color(.tertiarySystemGroupedBackground)全部替换 - 激活态只改颜色:激活/选中状态通过颜色传达,不通过背景块大小或加粗传达
- 暖金是唯一 accent:移除所有
Color.accentColor(系统蓝)的使用,替换为暖金 - 描边统一 0.5pt:所有边框线宽 0.5pt,不用 1pt 或 2pt(播放高亮除外可用 0.5pt)
- 圆角统一 12pt:所有 chip、格子、卡片使用 12pt,小 pill 标签使用
Capsule() - emoji 上限 22pt:任何场景下 emoji 不超过 22pt
所有子页面(LibraryPickerView、ProfileView 等)遵守以下基准:
- 背景色使用主背景(
#F0EFF4/#16151A),不使用系统默认 - 列表分隔线:
0.5pt,极弱色 - 选中态:Accent tint 背景 + Accent 文字
- 按钮:outline 样式(透明底 + 0.5pt Accent 描边),不用实心填充按钮
- NavigationTitle:主文字色,
.inline样式优先
本文档由设计探讨阶段产出,交 Claude Code 执行时可直接引用各节规范。