用途:为 SwiftUI 的 iOS/tvOS 项目提供主题与配色决策框架,帮助判断自定义主题是否必要,以及颜色架构与切换策略的取舍。
主要能力:提供多组决策树。判断是否需要自定义主题(仅亮暗模式用系统色即可;品牌色用资源目录命名颜色;用户可选主题才需要完整 ThemeManager;白标应用可用远程主题配置)。颜色令牌架构按规模分级,小应用直接使用 Color("name"),中型应用用 Color 静态属性扩展,大型设计系统分原始令牌与语义令牌,多品牌用基于协议的主题。主题切换策略分为基于 Environment 立即生效、withAnimation 逐屏动画、快照交叉淡入以及需要重启的深度 UIKit/第三方 SDK 场景。深色模式合规分为系统自动、资源目录双语、程序化动态色。另含主题管理器持久化模式、对比度校验实现与快速参考表。
使用方式:按决策树选择方案;颜色优先使用 Color(.label)、Color(.systemBackground) 等语义色;需要品牌色时在资源目录定义亮暗变体;主题状态集中到一个 ObservableObject 并使用 @AppStorage 持久化;仅在用户显式选择时通过 overrideUserInterfaceStyle 覆盖系统偏好,并遍历所有 UIWindowScene 的 window 应用。
适用场景与限制:适用于使用 SwiftUI 的 iOS 与 tvOS 应用。资料未提供具体版本、安装命令、平台收费方式或性能基准;示例仅针对 Apple 平台,未覆盖 Android 或 Web。始终避免硬编码颜色、纯黑纯白对比、在视图中依赖 colorScheme 重新实现语义色、多处存储主题状态,并需满足 WCAG 对比度要求(AA 正文 4.5:1,AAA 7:1)。