如何使用SwiftUI使用alpha值创建颜色?

Ign*_*ioC 1 ios swiftui

UIKit创建与α值的颜色有不同的方式,例如:

UIColor(red: 0, green: 0, blue: 0, alpha: 0.8)
Run Code Online (Sandbox Code Playgroud)

但这种方法不适用于对应类ColorSwiftUI

我可以使用什么?

kon*_*iki 15

颜色初始值设定项有一个 opacity 参数:

Color(red: 1.0, green: 0, blue: 1.0, opacity: 0.2)
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一可以改变颜色的不透明度并且仍然保持“Color”类型的答案。通过向 Color 添加 `.opacity` 修饰符,它将返回一个 `View` 而不是 `Color`。例如,您不能使用`.foregroundColor(Color.black.opacity(0.8))`,因为您刚刚将颜色更改为视图。 (3认同)

cha*_*l-f 13

看来现在可以使用该.opacity方法并仍然返回 aColor而不是 a View

文档
func opacity(_ opacity: Double) -> Color
Run Code Online (Sandbox Code Playgroud)
例子:
color.opacity(0.5)
Run Code Online (Sandbox Code Playgroud)


Jua*_*dez 11

这里的几个答案都指向.opacity()View的方法。这涵盖了最常见的用例,但也许OP想知道的是如何创建Color具有透明度的。

一种是使用Color具有颜色空间、组件和不透明度的构造函数,如下面的第一个示例所示。

如果您已经有一个Color并且想要它的半透明版本,请使用桥来UIColor喜欢下面的第二个示例

let transparentTeal = Color(.sRGB, red: 0.4, green: 1, blue: 0.1, opacity: 0.2)

let red = Color.red

let transparentRed = Color(UIColor(red).withAlphaComponent(0.3))
Run Code Online (Sandbox Code Playgroud)


Mar*_*cas 6

不透明度修改器应用于任何 SwiftUI 视图,例如:

RoundedRectangle(cornerRadius: 5)
    .fill(Color.yellow)
    .frame(width: 50, height: 50)
    .opacity(0.5)
Run Code Online (Sandbox Code Playgroud)

  • 这有效,但没有回答OP关于如何创建颜色的问题。不透明度修改器用于视图 (2认同)

Ign*_*ioC 5

其中SwiftUI有一个称为的特定修饰符opacity,可用于更改任何颜色的alpha等级

Text("Hello world").background(Color.black.opacity(0.8)) // Set the background color as partially transparent.
Run Code Online (Sandbox Code Playgroud)

另外,可以将相同的修改器应用于任何视图,以更改其alpha。

Image("myImage").opacity(0.8) //The image will be partially transparent
Run Code Online (Sandbox Code Playgroud)

  • 对你的答案的一个小贡献:``.opacity()````改变任何视图的不透明度。碰巧颜色***是***一种视图。但是,不需要创建具有不透明度的颜色,因为它在初始化程序中有自己的参数(请检查我的答案)。 (2认同)