首页 > 解决方案 > 如何以正确的方式在 SwiftUI 中使用颜色?(特别适用于具有 Light 和 DarkMode 的应用程序)

问题描述

我有一个关于 SwiftUI 和 Darkmode 编程的小问题。到目前为止,我正在快速编程 4 个月,我想开始为暗模式和亮模式编程。

在 SwiftUI 中,有一些方法可以为某些内容着色,例如 Text。如果我想从文本绿色中为前景着色,有以下方法可以做到(如果我错了,请纠正我):

.foregroundColor(.green)
.foregroundColor(Color.green)
.foregroundColor(Color(UIColor.green))
.foregroundColor(Color(UIColor.systemGreen)) <- I usually do this

在浅色模式下,这是可行的,但如果我切换到深色模式,我的一些组件的颜色会有所不同,例如,如果我有一个黑色的前景,这个前景现在是白色的。但是对于其他一些组件,它是黑色的。

你们能给我一个示例,我应该如何正确地为 Darkmode 编程吗?我应该使用以上 4 种方法中的哪一种?还是有不同的方法?或者您还有其他使用 SwiftUI 为前部和背景着色的技巧吗?

注意:我不是想为特定问题找到解决方案,我只是想了解所有颜色和不同的着色方法在 SwiftUI 中是如何工作的。我已经用谷歌搜索了一些东西,但没有找到我理解的东西,所以我在这里试试运气:D

标签: iosswiftswiftui

解决方案


颜色是 SwiftUI 中的一个视图。

UIColor 是 UIKit 的子类。

您可以使用 UIColor 初始化 Color,支持暗模式的标准颜色具有“系统”前缀systemBluesystemGreen...

所以如果你想使用苹果标准色支持Dark模式,你应该使用第4种方法

.foregroundColor(Color(UIColor.systemGreen))

P / s:您可以使用颜色资产然后用它的名称初始化

.foregroundColor(Color("colorName"))

推荐阅读