gpt4 book ai didi

ios - 在 ScrollView 中切换 VStack 的饱和度 - SwiftUI

转载 作者:行者123 更新时间:2023-12-04 08:43:14 25 4
gpt4 key购买 nike

我有一个包含 VStacks 按钮数组的 ScrollView。 VStack 数据由名为 ProductModel 的数据模型填充。 .我也路过一个ObservableObject从这里的另一个 View :( 注意 :此数据字符串确实会更改,因此它并不总是 All 。ScrollView 中的 ProductModel 之一将始终匹配正在传递的数据)。

class selectedApplication: ObservableObject {
@Published var selectedApplication = "All"
}
我想要做的是将所有与传递的数据字符串不匹配的行灰化,只保留匹配的 VStack,着色。之后,如果按下不同的按钮,则该 VStack 变为彩色,所有其他按钮变为/保持灰色。我曾尝试通过 @State 执行此操作并使用切换来更改饱和度但没有运气。因此,任何有关如何解决此问题的指导将不胜感激!谢谢
这是 VStack 的 View :
struct ProductTab5View: View {

@ObservedObject var application: selectedApplication
@State private var selection: Bool? = true
var product: ProductModel

var body: some View {
ScrollView(.horizontal){
HStack
ForEach(product.application, id: \.self) { item in
Button(action: {
application.selectedApplication = item
selection = false
}) {
VStack{
Image(item)
Text(item)
}
.saturation(selection ?? true ? 0.0 : 1.0)
}
}
}
}
}

最佳答案

不需要额外的 @State多变的。您可以尝试以下操作:

struct ProductTab5View: View {
@ObservedObject var application: selectedApplication
var product: ProductModel

var body: some View {
ScrollView(.horizontal) {
HStack
ForEach(product.application, id: \.self) { item in
Button(action: {
application.selectedApplication = item
}) {
VStack {
Image(item)
Text(item)
}
.saturation(application.selectedApplication == item ? 1.0 : 0.1)
}
}
}
}
}

关于ios - 在 ScrollView 中切换 VStack 的饱和度 - SwiftUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64453714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com