我可以在swiftui中使用颜色文字吗

时间:2019-08-01 10:46:54

标签: swift uicolor swiftui xcode11

我想使用颜色标签使用资产类别日志中的颜色资产 在uikit中,我们可以直接使用color litral,有没有办法在swiftui中使用color litrals

我已经使用uicolor参数从Color初始值设定项中进行搜索,但没有找到

6 个答案:

答案 0 :(得分:1)

注意:Beta 5已经为此 提供了一个初始化程序,无需实现它。但是,如果您使用的是早期版本,请借助UIColor的某些扩展名:

extension UIColor {
    var rgba: (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {
        var red: CGFloat = 0
        var green: CGFloat = 0
        var blue: CGFloat = 0
        var alpha: CGFloat = 0
        getRed(&red, green: &green, blue: &blue, alpha: &alpha)

        return (red, green, blue, alpha)
    }
}

然后Color

extension Color {
    init(_ uiColor: UIColor) {
        self.init(red: Double(uiColor.rgba.red),
                  green: Double(uiColor.rgba.green),
                  blue: Double(uiColor.rgba.blue),
                  opacity: Double(uiColor.rgba.alpha))
    }
}

然后您可以像这样使用colorLiteral:

Color(#colorLiteral(red: 1, green: 0, blue: 0, alpha: 1))

或任何其他UIColor:

Color(.red)

答案 1 :(得分:1)

是的,SwiftUI具有颜色文字。 颜色文字是颜色结构的参数。请执行以下步骤:
1.输入单词Colo
2.从自动完成功能中选择颜色文字
3.现在,您可以单击颜色文字并选择一种颜色enter image description here

答案 2 :(得分:0)

您可以通过在Color内传递字符串名称来使用资产目录中定义的init

因此,如果我的Assets.xcassets中有“背景”颜色:

enter image description here

我将使用:

let backgroundColor = Color("Background")

或者,如果颜色是在另一个Bundle中定义的,则可以使用:

Color(name: String, bundle: Bundle)

P.S。看来,Color Literals不适用于Asset颜色的

答案 3 :(得分:0)

您可以使用UIColor的getRed()方法获取红色,绿色,蓝色和Alpha分量,然后使用它们创建一个Color对象。您甚至可以创建为您完成的扩展程序。

答案 4 :(得分:0)

实际上,您可以使用此隐藏协议为Color提供与UIColor相同的颜色文字用法:

extension Color: _ExpressibleByColorLiteral {
    public init(_colorLiteralRed red: Float, green: Float, blue: Float, alpha: Float) {
        self = Color(.sRGB, red: Double(red), green: Double(green), blue: Double(blue), opacity: Double(alpha))
    }
}

现在您可以将颜色文字用于Color参数。

答案 5 :(得分:0)

轻松为Xcode Swift UI拖放颜色

我发现在设计版面时很有用,我需要快速找到并调整颜色才能使用此方法。

每当我想在SwiftUI中使用拖放样式颜色文字时,我都会这样做。

稍后,我只需将代码中的颜色文字行注释掉“ //”即可显示出所选颜色的RGB,然后将硬编码颜色添加到我的配色方案中。


Using Easy Drag and Drop Color Literals with Xcode, Swift, SwiftUI


  • 对不起,除了以这种格式发布答案以外,我找不到其他任何方式来描述此答案*

希望有帮助。