如何在SwiftUI中以编程方式使动态颜色变浅或变暗?

4

有人已经介绍了如何在Swift中调整UIColor的亮度, 但我没有看到一种好的方法来以编程方式"变亮"和"变暗"动态的SwiftUI Colors

我正在使用Color(.systemGreen)创建绿色Text,我希望它在浅色背景上更暗,在深色背景上更亮

  • 使用.contrast()修改器会增加绿色的饱和度,但并不会让它变得更暗。
  • 使用负值的.brightness()修改器会使它在浅色和深色模式下都变暗,这对于深色模式来说不是很有效,因为它难以阅读。

最好的方法可能是在资源目录中创建自定义颜色集。 - aheze
很好的问题,@NikPayne,你最终解决了吗? - Patrick
1个回答

1
你需要观察现在设置的颜色主题,并根据它使用特定的颜色。如果你想使用非系统颜色,最好为浅色和深色模式添加新的颜色集合到资源中。
import SwiftUI
struct temp_color: View {
    var colorScheme: ColorScheme
    var body: some View {
        Text("Hello, World!")
            .foregroundColor(colorScheme == .light ? Color(.systemGreen) : Color(.systemRed))}
}
struct temp_color_Previews: PreviewProvider {
static var previews: some View {
    temp_color(colorScheme: .light)
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接