1

SwiftUI 中有没有办法为 HStack 中的所有项目添加渐变颜色。

在此处输入图像描述

您可以将单个颜色应用于 HStack.background.foregroundColor但是因为 LinearGradient 是一个符合 View 的结构,所以您无法将其传递给它,.foregroundColor因为它需要一个颜色。

您可以通过各种方式解决这个问题(下面的一个示例使用不透明度),但如果我错过了其他东西,我对这么多 SwiftUI 选项感到好奇?

SwiftUI 示例:

struct GradView: View {
    var body: some View {
        HStack {
            ForEach((1...5).reversed(), id: \.self) { index in
                RoundedRectangle(cornerRadius: 5)
                    .frame(width: 50, height: 50)
                    .opacity(Double(index) / 5)
            }
        }.foregroundColor(Color.red)
    }
}

SwiftUI 输出:

在此处输入图像描述

4

1 回答 1

1

有内置的渐变......如何呈现它取决于我们......这是可能的替代品,但它只是......许多其他变体之一......你知道的。

演示

struct GradView: View {
    var body: some View {
        HStack(spacing: 0) {
            ForEach((1...7).reversed(), id: \.self) { index in
                HStack(spacing: 0) {
                    Rectangle().fill(Color.clear)
                        .frame(width: 50, height: 50)
                    Rectangle().fill(Color(UIColor.systemBackground))
                        .frame(width: 4, height: 50)
                }
            }
        }.background(LinearGradient(gradient: 
           Gradient(colors:[.red, .black]), 
                    startPoint: .leading, endPoint: .trailing))
    }
}
于 2020-05-01T13:44:10.733 回答