# SF Symbol 使用清单 项目中所有使用 SF Symbol 的位置及对应 symbol 名称。 --- ## 一、按文件列出 ### VerticalScreenPlayerView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 56 | `arrow.left` | 返回按钮 | | 154 | `exclamationmark.triangle` | 错误/警告提示 | | 209 | `book.closed` | 课程/书本占位 | | 814 | `exclamationmark.triangle` | 错误态占位 | ### MapView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 84 | `exclamationmark.triangle` | 错误提示 | | 344 | `arrow.left` | 返回按钮 | | 409 | `iconName`(动态) | 地图头水印,来自 `data.watermarkIcon` | | 415 | `book.closed.fill` | 地图头水印兜底(无 watermarkIcon 时) | | 597 | `lock.fill` | 节点锁定状态 | | 607 | `checkmark` | 节点已完成 | | 618 | `play.fill` | 节点可播放 | ### LoginView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 51 | `xmark` | 关闭弹窗 | | 106 | `checkmark.square.fill` / `square` | 同意协议勾选(已选/未选) | | 176 | `applelogo` | 苹果登录按钮 | | 364 | `arrow.left` | 返回按钮 | ### ProfileView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 285 | `lock.circle.fill` | 锁定课程标识 | | 393 | `course.watermarkIconName`(动态) | 课程卡片水印 | | 421 | `course.watermarkIconName`(动态) | 课程卡片水印 | | 530 | `exclamationmark.triangle.fill` | 错误提示 | | 629 | `chevron.right` | 右箭头/进入 | | 738 | `book.closed` | 空状态/占位 | | 814 | `xmark.circle.fill` | 关闭/删除 | | 713 | `pencil` | Label「编辑信息」 | | 720 | `trash` | Label「删除」 | ### Views/Profile/CyberLearningIDCard.swift | 行号 | Symbol | 用途 | |------|--------|------| | 174 | `square.and.pencil` | 编辑 | | 196 | `person.fill` | 头像占位 | ### NoteBottomSheetView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 52 | `quote.opening` | 引用/摘录 | | 95 | `trash` | 删除 | | 211 | `ellipsis` | 更多菜单 | ### Views/GrowthView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 71 | `book.closed` | 课程占位 | | 208 | `lock.circle.fill` | 锁定课程 | | 578 | `exclamationmark.circle.fill` / `checkmark.circle.fill` | Toast 类型图标 | | 628 | `trash` | Label「移除课程」 | | 635 | `doc.text` | Label「查看详情」 | | 647 | `pencil` | Label「修改课程名称」 | | 656 | `trash` | Label「移除课程」 | ### Views/Growth/GrowthTopBar.swift | 行号 | Symbol | 用途 | |------|--------|------| | 22 | `plus` | 添加按钮 | ### ArticleRichTextView.swift(UIKit 菜单) | 行号 | Symbol | 用途 | |------|--------|------| | 740 | `highlighter` | 划线 | | 745 | `bubble.left.and.bubble.right` | 写想法 | | 750 | `doc.on.doc` | 复制 | ### Views/DiscoveryComponents.swift | 行号 | Symbol | 用途 | |------|--------|------| | 63 | `iconName`(动态) | 发现流卡片水印,来自 `item.watermarkIcon` | | 145 | `iconName`(动态) | 信息流卡片水印,来自 `course.watermarkIcon` | ### Views/CreationHubView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 86 | `arrow.up.circle.fill` | 上传/发布 | | 194 | `checkmark.circle.fill` | 成功状态 | | 219 | `xmark.circle.fill` | 失败/关闭 | | 460 | `icon`(动态) | 列表行图标,见下方取值 | | 473 | `chevron.right` | 右箭头 | | 557 | `book.closed` | 空状态 | **CreationHubRow 的 `icon` 取值(写死在调用处):** - `folder.fill` — 我的创作 - `doc.text.fill` — 从文档创建 - `arrow.triangle.2.circlepath` — 从已有课程复制 ### DesignSystem.swift | 行号 | Symbol | 用途 | |------|--------|------| | 337 | `photo` | 占位图/无图 | ### Views/PersonaSelectionView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 102 | `chevron.left` | 返回 | | 172 | `checkmark.circle.fill` | 已选 | | 177 | `circle` | 未选 | ### Views/CreateCourseInputView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 158 | `doc.fill` | 文档 | | 180 | `doc.fill` | 文档 | | 199 | `xmark.circle.fill` | 关闭/清除 | ### Views/GenerationProgressView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 84 | `exclamationmark.triangle.fill` | 错误 | | 163 | `checkmark.circle.fill` | 成功 | | 198 | `xmark` | 关闭窗口 | ### NotebookListView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 117 | `lock.doc.fill` | 锁定笔记本 | | 221 | `book.closed` | 空状态 | | 193 | `pencil` | Label「编辑信息」 | | 200 | `trash` | Label「删除」 | ### Views/Profile/ProfileNoteListView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 16 | `note.text` | 笔记列表 | | 113 | `book.closed` | 空状态 | ### Views/Profile/EditProfileSheet.swift | 行号 | Symbol | 用途 | |------|--------|------| | 52 | `person.fill` | 头像占位 | | 65 | `person.fill` | 头像占位 | | 77 | `camera.fill` | 拍照/相册 | ### Views/Profile/AvatarPicker.swift | 行号 | Symbol | 用途 | |------|--------|------| | 14 | `photo.stack` | 相册选择 | ### PaywallView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 31 | `xmark.circle.fill` | 关闭 | | 45 | `lock.open.fill` | 解锁/付费入口 | | 133 | `checkmark.circle.fill` | 权益项勾选 | ### ToastView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 23 | `exclamationmark.circle.fill` / `checkmark.circle.fill` / `info.circle.fill` | 按 Toast 类型(error/success/info) | ### NoteTreeView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 136 | `square.and.pencil` | 编辑 | ### NoteListView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 73 | `note.text` | 笔记列表 | | 218 | `book.closed.fill` | 空状态 | | 257 | `highlighter` | 划线 | | 307 | `note.text.badge.plus` | 新建笔记 | ### NoteInputView.swift | 行号 | Symbol | 用途 | |------|--------|------| | 35 | `quote.opening` | 引用样式 | ### Views/NoteTree/NoteTreeRow.swift | 行号 | Symbol | 用途 | |------|--------|------| | 72 | `pencil` | Label「编辑」 | | 76 | `trash` | Label「删除」 | --- ## 二、动态 Symbol 来源汇总 | 使用处 | 变量/属性 | 可能取值(来源) | |--------|-----------|------------------| | MapView 地图头水印 | `data.watermarkIcon` | 后端 API;无则兜底 `book.closed.fill` | | DiscoveryComponents 卡片水印 | `item.watermarkIcon` / `course.watermarkIcon` | 后端 API | | ProfileView 课程水印 | `course.watermarkIconName` | 见 CourseModels 逻辑 | **CourseModels.watermarkIconName 逻辑:** - 若有 `watermarkIcon` 且非空 → 用该值 - 否则按 `type`:`system` → `book.closed.fill`,`single` → `doc.text.fill`,`vertical_screen` → `rectangle.portrait.fill`,默认 → `doc.text.fill` --- ## 三、按 Symbol 名称汇总(便于替换/统一) | Symbol | 出现位置(简要) | |--------|------------------| | `arrow.left` | VerticalScreenPlayerView, MapView, LoginView 返回 | | `arrow.up.circle.fill` | CreationHubView 上传 | | `arrow.triangle.2.circlepath` | CreationHubView 从课程复制 | | `applelogo` | LoginView 苹果登录 | | `book.closed` | VerticalScreenPlayerView, ProfileView, GrowthView, CreationHubView, NotebookListView, ProfileNoteListView 占位/空态 | | `book.closed.fill` | MapView 水印兜底;CourseModels 中 type=system;NoteListView 空态 | | `bubble.left.and.bubble.right` | ArticleRichTextView 写想法 | | `camera.fill` | EditProfileSheet | | `checkmark` | MapView 节点完成 | | `checkmark.circle.fill` | 多处成功/已选/权益勾选 | | `checkmark.square.fill` / `square` | LoginView 协议勾选 | | `chevron.left` | PersonaSelectionView 返回 | | `chevron.right` | ProfileView, CreationHubView 进入下一级 | | `circle` | PersonaSelectionView 未选 | | `doc.fill` | CreateCourseInputView | | `doc.on.doc` | ArticleRichTextView 复制 | | `doc.text` | GrowthView Label 查看详情 | | `doc.text.fill` | CreationHubView 从文档创建;CourseModels single/默认 | | `ellipsis` | NoteBottomSheetView 更多 | | `exclamationmark.circle.fill` | GrowthView/ToastView 错误 | | `exclamationmark.triangle` | VerticalScreenPlayerView, MapView 警告 | | `exclamationmark.triangle.fill` | ProfileView, GenerationProgressView 错误 | | `folder.fill` | CreationHubView 我的创作 | | `highlighter` | ArticleRichTextView 划线;NoteListView 划线 | | `info.circle.fill` | ToastView info 类型 | | `lock.fill` | MapView 节点锁定 | | `lock.circle.fill` | ProfileView, GrowthView 课程锁定 | | `lock.doc.fill` | NotebookListView 笔记本锁定 | | `lock.open.fill` | PaywallView 解锁 | | `note.text` | ProfileNoteListView, NoteListView | | `note.text.badge.plus` | NoteListView 新建笔记 | | `pencil` | ProfileView, GrowthView, NotebookListView, NoteTreeRow Label 编辑 | | `person.fill` | CyberLearningIDCard, EditProfileSheet | | `photo` | DesignSystem 占位 | | `photo.stack` | AvatarPicker | | `play.fill` | MapView 节点播放 | | `quote.opening` | NoteBottomSheetView, NoteInputView 引用 | | `rectangle.portrait.fill` | CourseModels vertical_screen 水印 | | `square.and.pencil` | CyberLearningIDCard, NoteTreeView 编辑 | | `trash` | 多处 Label/按钮 删除 | | `xmark` | LoginView, GenerationProgressView 关闭 | | `xmark.circle.fill` | ProfileView, CreationHubView, CreateCourseInputView, PaywallView 关闭/清除 | --- *文档根据当前代码静态分析生成,若新增或修改 SF Symbol 请同步更新此清单。*