HStack 中项目的线性颜色渐变?

Linear Color Gradient to items in HStack?

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

您可以将单独的 Color 应用于 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 输出:

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

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))
    }
}