Линейный градиент цвета для элементов в HStack? - PullRequest
0 голосов
/ 01 мая 2020

Есть ли способ в SwiftUI добавить цвет градиента ко всем элементам в HStack.

enter image description here

Вы можете применить отдельный цвет к обоим 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 Вывод:

enter image description here

1 Ответ

0 голосов
/ 01 мая 2020

Есть встроенный градиент ... как представить это зависит от нас ... Здесь возможна альтернатива, но это просто ... один из многих других вариантов .. вы знаете.

demo

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