首页 > 解决方案 > SwiftUI:使用资产目录中的颜色集

问题描述

在 SwiftUI 中,我们可以使用以下命令从资产目录中的颜色集中获取颜色:

extension Color {
    static let coral = Color("coral")
}

这需要字符串类型的名称,并且对于许多颜色集变得非常乏味。是否有另一种获取颜色集的方法,类似于我们使用图像文字从资产目录中获取图像的方式?或者,只是一些不那么多余的东西。

如果不是,如何在 SwiftUI 中以编程方式创建动态颜色?例如,这就是它在 UIKit 中的完成方式:

extension UIColor {
    static let dynamicColor = UIColor { $0.userInterfaceStyle == .dark ? .black : .white }
}

标签: colorsuicolorswiftuiasset-catalog

解决方案


我想分享一种在资产目录中定义动态颜色的替代方法,但不需要编写繁琐的代码

Color("yellow")

1. 像往常一样在资产目录中定义你的颜色

在此处输入图像描述

2. 在您的代码中,找到一个将您的颜色定义为变量的位置,在我的情况下,它将是这样的:

extension Color {
    static let ui = Color.UI()
    
    struct UI {
         let yellow = Color("yellow")
    }
}

3. 完成

像这样使用你的颜色:

Text("Hello").background(Color.ui.yellow)

这只需要在代码中编写硬编码颜色 1 次。


推荐阅读