Я вижу ваш код и сожалею, но он ошибочен во многих аспектах. Я бы порекомендовал вам go изучить основы SwiftUI и понять, как и когда мы используем @State, @ObservedObject, @Binding et c. Также всегда старайтесь разбивать ваши представления на мельчайшие компоненты. Ниже приведен код, который, как мне кажется, соответствует вашим требованиям.
struct Test: View {
var cards : [Card] = [Card(), Card(), Card(), Card(), Card(), Card()]
var body: some View {
VStack {
ZStack (alignment: .top){
ForEach (0..<cards.count) { i in
CardView(card: self.cards[i], i: i)
}
}
Spacer()
}
}
}
struct CardView: View {
@ObservedObject var card: Card
let i: Int
var body: some View {
RoundedRectangle(cornerRadius: 10).frame(width: 250, height: 150)
.foregroundColor(Color.random)
.offset(y: card.isFocus ? CGFloat(500) : CGFloat(i*10))
.zIndex(Double(i))
.onTapGesture {
withAnimation {
self.card.isFocus.toggle()
}
}
}
}
class Card: ObservableObject{
@Published var isFocus: Bool = false
var id = UUID()
}