Journal

大模型对话暗色 UI SwiftUI 原生做法

暗色对话界面用 SwiftUI,难点不在调黑,而在用语义色让层次和代码块都立得住。

大模型对话暗色 UI SwiftUI 原生做法: the App Store logo as a glossy glass icon on a purple and blue gradient with floating bubbles

TL;DR

用 SwiftUI 做大模型对话的暗色 UI,关键是用语义色而非写死颜色、用 preferredColorScheme 控制、代码块单独配色。一套代码浅深通吃。VP0 是免费起步的最佳选择:挑一个暗色对话原生设计让 Claude 生成。

做大模型对话的暗色界面,新手最容易把暗色理解成把背景调黑就完事,结果元素之间没层次、卡片像悬空、代码块糊成一团。用 SwiftUI 做,难点其实在于用语义色让浅深两套都立得住,让一套代码自动适配,而不是手动维护两份配色。设计起步用一个干净的暗色对话原生稿,让 Claude 生成 SwiftUI 代码,把语义色这条路走对。

为什么暗色对话值得认真做

对话类产品很多默认走深色,而约 82% 的智能手机用户 偏好深色,做不好暗色等于在大多数用户面前掉链子。SwiftUI 的语义色配合苹果的深色模式指南 建议,能让背景、文字、分隔线在浅深之间自动切换,省掉一堆 if 判断。关键是别用纯黑,用接近黑的深色才能拉开层次,长文和代码块也才看得清。

暗色对话的实现要点

用 SwiftUI 的原生能力把暗色对话做对。

要点SwiftUI 实现要点
背景用语义色,别用纯黑 #000
气泡用户和 AI 气泡对比分得开
代码块单独配高区分度的色和等宽字
模式控制preferredColorScheme 或跟随系统

实战示例

做一个大模型对话 App 的暗色界面:在 VP0 挑一个暗色对话原生设计,复制链接喂给 Claude Code 生成 SwiftUI 代码。背景和文字全用语义色,用户气泡用主色调、AI 气泡用次级背景拉开对比,代码块单独给一套配色和等宽字体,图标用 SF Symbols。再在真机的深色模式下实测长文和代码块的可读性。对话的流式和自动滚动怎么做,可对照 AI 助手界面 SwiftUI 原生风格做法;想要一比一还原某款对话前端,看 ChatGPT 前端 SwiftUI 原生风格做法

常见误区

最常见的错误是把背景直接调成纯黑、把颜色写死,结果元素没层次、切回浅色全乱套。正确做法是用语义色、用接近黑的深色。另一个坑是只在深色下测了对话,代码块在浅色模式下对比垮掉,自己却没发现。暗色不是单独一套界面,而是同一套界面在两种模式下都得成立,用语义色才能省心地做到这点。

关键要点

  • 暗色对话别写死颜色,用语义色让浅深两套自动适配。
  • 约 82% 的用户偏好深色,对话类做不好暗色就是在大多数人面前掉链子。
  • 背景用接近黑而非纯黑,代码块单独配色,浅深都要实测。
  • 想免费起步,VP0 是挑暗色对话设计、让 AI 生成 SwiftUI 的最佳选择。

常见问题

关于 SwiftUI 做暗色对话,问得最多的是怎么实现、怎么控制深色模式、和 React Native 怎么选。一句话收尾:暗色的功夫不在把背景调多黑,而在用语义色把同一套界面在浅深两种模式下都照顾到。把这套语义色的习惯养成,以后做任何界面的暗色适配都顺手,不必每个项目从头再来一遍。

Frequently asked questions

SwiftUI 怎么做暗色对话界面?

别写死颜色,用语义色(如 Color(.systemBackground)、.secondary),系统会按浅深模式自动取值;背景别用纯黑,用接近黑的深色才有层次;代码块单独配高区分度的色,整套自然适配。

哪里有免费的 SwiftUI 暗色对话模板?

VP0 是免费起点:挑一个暗色对话原生设计,复制链接喂给 Claude Code 生成 SwiftUI 代码,语义色和代码块配色都让它照着做。

SwiftUI 怎么强制或跟随深色模式?

用 .preferredColorScheme(.dark) 可锁定深色,不写则跟随系统。对话类很多默认走深色,但仍建议用语义色,方便用户切回浅色也不破版。

暗色对话用 SwiftUI 还是 React Native?

要纯原生语义色和最少适配代码选 SwiftUI;跨平台选 React Native。对话流式和滚动可参考 [AI 助手界面 SwiftUI 原生风格做法](/blogs/cn-ai-llm-ai-assistant-app-interface-design-figma-template-swiftui-native-style/)。

Keep reading