JoniVR / VerticalCardSwiper

A marriage between the Shazam Discover UI and Tinder, built with UICollectionView in Swift.
MIT License
1.4k stars 101 forks source link

Reverse approach of cards stack? #46

Closed sevgjan closed 5 years ago

sevgjan commented 5 years ago

Is there a possibility to reverse the approach, like have a stack of cards and then either swipe left/right or just scroll card to bottom, and swipe up if you want to bring back the scrolled card?

JoniVR commented 5 years ago

Hi @sevgjan

I'm not sure I understand what you're trying to say? Do you mean the "next visible card" at the top?

Like this? (just flipped it as an example)

Screenshot 2019-05-04 at 19 13 58

Please share some more detail.

Best Regards, Joni

sevgjan commented 5 years ago

Hi @JoniVR Thanks for a quick reply. What I mean is similar to Tinder approach but with possibility to scroll down a card. Basically there is no next visible card, neither top or bottom, cards are only in a stack, but you can either vote or just scroll the stack.

If I'm not clear enough let me know, I will try to demonstrate with some sketches.

Best regards, Sevgjan

JoniVR commented 5 years ago

So basically starting from the bottom?

A bit like this? RPReplay_Final1556996155

You can start off at the bottom by using

cardSwiper.scrollToCard(at: Int, animated: Bool) -> Bool

To scroll to the bottom of your stack (without animation) at first launch, make sure to call it in the correct place as described inside the documentation of the call.

To hide the next visible card, set cardSwiper.visibleNextCardHeight = 0

Of course then you still have the issue where if you scroll away a card, the previous card (the one at the bottom) will go up instead of the next card becoming visible. I'm not exactly sure how you could achieve that desired effect (in fact I'm not even sure if it's possible in a UICollectionView), the problem with a UICollectionView in this case is that it has some default animation handling which seems hard to override. I'm currently looking into this myself, basically you'd run into the same issue that's causing #43 (check out the stackoverflow thread there for an explanation).

I know this is not exactly what you mean by "reversing it" but more of a way to make the current implementation do what you want.

I'd suggest either forking this repo or building from scratch using UIViews instead. Your call, I'm not really planning on supporting what you're trying to achieve by default, it would complicate things too much, and I prefer keeping it single-purpose. I could be wrong of course and it could be as easy as switching some things up in the custom flowlayout, but so far I haven't figured out a proper way to do it.

I'm still planing on fixing the bug at the end of the stack but I'm taking my time to find a good solution for that.

I hope I properly understood your intentions, and I'm sorry I can't help you much more than this. If I misunderstood or if you have further questions, please let me know.

sevgjan commented 5 years ago

Don't worry, you helped more than enough. I have to check about adding more items and pagination implementation in this case, but I will try to do some tweaking and if I'm able to achieve what I want, I will let you know.

Thanks a lot again.

JoniVR commented 5 years ago

Best of luck!