B2Fq
B2Fq

Reputation: 916

Hide upper CollectionView cells with animation (Swift 4)

How can I make it so that when I scroll down the top cells are not trimmed like mine and hiding with animation?

My App:

gif

Example: gif

I tried VegaScroll, but it does not match the description

Upvotes: 2

Views: 952

Answers (1)

Mohmmad S
Mohmmad S

Reputation: 5088

You need to edit you layout using the Delegate, after Setting the Layout as Vega

i've achieved this using this Code.

    //in viewDidLoad  
    let layout1 = VegaScrollFlowLayout()

    collectionView.collectionViewLayout = layout1

And then using CollectionView layout Delegate

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    let width = collectionView.frame.width / 3 - 1
    return CGSize(width: width, height: width)
   }

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 1.0
   }

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
        return 1.0
   }

i don't see any code provided by you but i assume you override the Layout like this.

collectionView.collectionViewLayout = layout
layout.minimumLineSpacing = 20
layout.itemSize = CGSize(width: collectionView.frame.width, height: 87)
layout.sectionInset = UIEdgeInsets(top: 10, left: 0, bottom: 10, right: 0)

And that what causes the problem, Note the above code of the solution displays 3 cells per row.

Or you can simply achieve that by using this code in ViewDidLoad.

    let layout1 = VegaScrollFlowLayout()

       collectionView.collectionViewLayout = layout1
        layout1.minimumLineSpacing = 1
        let width =  Col1.frame.width / 3 - 1
        layout1.itemSize = CGSize(width: width , height: 87)
        layout1.sectionInset = UIEdgeInsets(top: 10, left: 0, bottom: 10, right: 0)

End Result

Upvotes: 1

Related Questions