图像与设计
在 Figma 设计与 SwiftUI 代码之间双向转换时…
需要把 Figma 设计实现为 SwiftUI,或把 SwiftUI 视图/屏幕/token 推回 Figma 时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在 Figma 设计与 SwiftUI 特定
解决思路
- 判断翻译方向:如果用户要从 Figma 文件/frame 在 iOS 项目中得到 SwiftUI,走 Design → code,加载 references/design-to-code.md。
- 如果用户要把 SwiftUI 视图/屏幕/token 推送到 Figma 文件,走 Code → design,加载 references/code-to-design.md。
- 如果请求不明确(同时出现 Figma URL 和 .swift 文件,且没有明确动词说明方向),先问用户是哪个方向,再加载对应 reference。
- 读取 Figma 时使用 get_design_context,并传入 clientLanguages: "swift"、clientFrameworks: "swiftui",使返回内容按 Swift 语境组织。
- 将 Figma URL 转成工具参数:figma.com/design/:fileKey/:fileName?node-id=:nodeId → 使用 fileKey,并把 nodeId 中的 - 替换为 :;对于 figma.com/design/:fileKey/branch/:branchKey/:fileName,使用 branchKey 作为 fileKey。
- 把 get_design_context 输出中的 React+Tailwind 当作结构参考,而不是逐字转写的源码;不要把 position: absolute、像素 frame、mix-blend-mode 堆叠直接搬到 SwiftUI 或 Figma;两个方向都以截图作为视觉真相来源。
- 把 iOS HIG 语义颜色当作 token 而非 hex 处理:var(--backgrounds/primary, …)、var(--labels/secondary, …)、var(--separators/non-opaque, …) 等映射到 SwiftUI 的 Color(.systemBackground)、Color.secondary、Color(.separator),并在 Figma 中映射到语义 collection 的 variables;保留映射,丢弃字面 RGBA。
- SF Symbols 在两个方向都按名称往返,绝不按 codepoint:Design → code 中,get_design_context 会把 Figma 的 SF Symbol glyph runs 替换为 <SFSymbol>{Image(systemName: "...")}</SFSymbol> 包装,逐字使用其中的名称;Code → design 中,在 use_figma 内调用 figma.util.getSfSymbolCharacter(name) 将符号名转换为对应字符,绝不手工查 codepoint。
- 识别底层 iOS pattern,而不是字面 node/view 名:large title + back chevron + trailing action 对应 NavigationStack chrome;底部 icon+label 行对应 TabView;重复等高行且带 leading/trailing chrome 对应 List;应匹配这些系统 pattern,而不是用 primitives 重建。
- Code → design 时使用 use_figma API;任何 use_figma 调用前先加载 figma-use。
- 如果 Code → design 任务要构建完整屏幕,再加载 figma-generate-design;如果要构建 components 或 design system,再加载 figma-generate-library。
适用边界 · 注意事项
- 任务不涉及 Figma ↔ SwiftUI 双向转换,或只做一般 SwiftUI 开发/一般 Figma 设计时。
- 缺少 Figma 读取/写入工具(如 get_design_context、use_figma)或无法加载 figma-use 等相关技能时,不能按该流程执行。
- 目标框架不是 SwiftUI(如 React、Flutter、UIKit)且不需要 Figma 与 SwiftUI 往返时。