ios - 如何以正确的方式在 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
解决方案
颜色是 SwiftUI 中的一个视图。
UIColor 是 UIKit 的子类。
您可以使用 UIColor 初始化 Color,支持暗模式的标准颜色具有“系统”前缀systemBlue
,systemGreen
...
所以如果你想使用苹果标准色支持Dark模式,你应该使用第4种方法
.foregroundColor(Color(UIColor.systemGreen))
P / s:您可以使用颜色资产然后用它的名称初始化
.foregroundColor(Color("colorName"))
推荐阅读
- javascript - 在 API 调用之前进行 React 渲染
- python - 试图在我的快速排序算法中找到我的错误
- java - 使用 java jssc 从 rs-485 读取数据
- c - 如何访问另一个结构中的双指针结构
- spring-boot - 在集成测试中自动配置 ReactiveCrudRepos
- javascript - 根据输入字段中的用户信息创建自动填充的动态链接 URL
- powerbi - 从一行生成多行
- html - 在 HTML 中自动完成 ERROR 404(使用 ASP.NET 和 JQuery)
- ios - 图鉴的保存状态
- reactjs - 用 TextInput 组件替换文本组件 - React Native