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