SwiftUI-CardStackView
SwiftUI-CardStackView copied to clipboard
The second card pass through the first one after swiping
Look closely, the second card pass through the first one after swiping, before it completely disappear. It looks / feels like the first card moved backwards and been drew out after the second card.
This is a known issue and in order to fix it I believe we need to change how we animate cards to outside of the screen. Current transition I used is one of SwiftUI defaults and needs to be replaced by custom animation. If you want to try fixing this or have any other way of fixing this, please let me know.
Hi @dadalar It looks like adding zIndex(1) for CardView in the card function fixes animation
private func card(index: Data.Index, relativeIndex: Int) -> some View {
CardView(
direction: direction,
isOnTop: relativeIndex == 0,
onSwipe: { direction in
self.onSwipe(self.data[index], direction)
self.currentIndex = self.data.index(after: index)
},
content: { direction in
self.content(self.data[index], direction, relativeIndex == 0)
.offset(
x: 0,
y: CGFloat(relativeIndex) * self.configuration.cardOffset
)
.scaleEffect(
1 - self.configuration.cardScale * CGFloat(relativeIndex),
anchor: .bottom
)
}
)
.zIndex(1)
}
Hi @ildarnm. Interesting because you're setting the same zIndex (1) for all cards. Maybe we can set negative index argument (.zIndex(-index)) or relativeIndex? Do you want to create a PR for that so that you can be the author?