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

tquggr8v  于 2023-04-19  发布在  Swift
关注(0)|答案(7)|浏览(163)

我想使用我的颜色资产从资产目录使用颜色文字。在UIKit中,我们可以直接使用颜色文字是否有任何方式使用颜色文字在SwiftUI
我已经用UIColor参数搜索了Color初始化器,但没有找到

de90aj5v

de90aj5v1#

**注意:**从Xcode 11 Beta 5开始,Color已经有了一个初始化器,不需要实现它。

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

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

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

Color(.red)
qlzsbp2j

qlzsbp2j2#

Xcode Swift UI轻松拖放颜色

我发现它有助于设计布局时,我需要找到和调整一个颜色迅速使用这种方法。
每当我想在SwiftUI中使用拖放风格的颜色文字时,我都会这样做。
稍后,我可以返回并将硬编码颜色添加到我的配色方案中,只需注解掉代码中显示所选颜色的RGB的颜色文字行“//”。

  • 对不起,我找不到任何其他方式来描述这个答案,除了张贴它这种格式 *

希望能帮上忙。

更新:从Xcode 13.2.1开始

  • 很有可能它出来得更早,但我没有抓住它 *

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

#colorLiteral()

然后,代码将自动将文字放置在代码中,以便您进行选择。

7xzttuei

7xzttuei3#

通过在init中传递字符串名称,可以使用在“资源目录”中定义的Color
所以,如果我在Assets.xcassets中有“背景”颜色:

我将用途:

let backgroundColor = Color("Background")

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

Color(name: String, bundle: Bundle)

附注:似乎颜色文字不与资产颜色的工作

1aaf6o9v

1aaf6o9v4#

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

ylamdve6

ylamdve65#

是的,SwiftUI有color literal。color literal是color结构的参数。使用以下步骤:
1.输入单词Colo
2.从autocomplete

中选择颜色文字
3.现在,您可以单击颜色文字并选择color

zpjtge22

zpjtge226#

在Xcode 13.4中使用Color Literal:开始输入:let myColor = Color(
然后会出现一个图标。双击图标,颜色选择框就会出现。选择颜色后,一定要在颜色后面使用一个右括号。

wooyq4lh

wooyq4lh7#

你可以使用UIColor的getRed()方法来获取红色、绿色、蓝色和alpha分量,然后使用它们来创建Color对象。你甚至可以创建一个扩展来为你做这件事。

相关问题