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

Can I use color literals in SwiftUI

我想通过颜色文字使用资产目录中的颜色资产。 在UIKit中,我们可以直接使用color literal 有没有办法在SwiftUI

中使用color literals

我使用 UIColor 参数从颜色初始值设定项中进行了搜索,但 none 找到了

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

所以,如果我的 Assets.xcassets 中有 "Background" 颜色:

我会用:

let backgroundColor = Color("Background")

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

Color(name: String, bundle: Bundle)

P.S。颜色文字似乎不适用于资产颜色的

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

注意: 从 Xcode 11 Beta 5 开始,Color 有一个初始化程序 已经 并且没有需要实施它。

所以你可以像这样使用 colorLiteral:

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

或任何其他 CGColorUIColor(或 NSColor for macOS):

Color(.red)

您实际上可以使用此隐藏协议为 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 参数使用颜色文字。

是的,SwiftUI 有颜色文字。 颜色文字是颜色结构的参数。使用以下步骤:
1. 输入单词 Colo
2. Select 来自自动完成的颜色文字
3. 现在你可以点击颜色文字和select一个颜色

Xcode Swift UI

的简单拖放颜色

我发现在设计需要快速查找和调整颜色的布局时使用此方法很有帮助。

每当我想在 SwiftUI.

中使用拖放样式颜色文字时,我都会这样做

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


  • 抱歉,我找不到任何其他方式来描述这个答案,除了以这种格式发布 *

希望对您有所帮助。


更新:截至 Xcode 13.2.1

很可能它出现得更早,但我没看到。

要使自动完成功能正常工作,请在您的代码中键入此行。

#colorLiteral()

然后代码会自动将字面量放在代码中供您选择。