Search code examples
xcodeloopsswift5collectionviewautoscroll

How to do horizontally autoscroll for colletionViewCell?


I have a collectionView at the top of my App view and I want to display some ads inside it, I made a ready array for some pictures that I want to display them in the collection view.

Now I'm looking for a method that I can make them horizontally scroll automatically.

class HomeVC: UIViewController{

override func viewDidLoad() {
    super.viewDidLoad()
    setupCollectionViewCell()
}

@IBOutlet weak var collectionView: UICollectionView!


var array = [ "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcR8aTilga7j-8GfP4OUXUx1bV3E2EJaFt29QdSBD8OgcLBLCUiG&usqp=CAU?",
             "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcRVq4AqZIDQ_UPnSd-PxQGkEutZnlu76NbZ4xETWelVnULLJ614&usqp=CAU",
    "https://scontent.ffjr1-2.fna.fbcdn.net/v/t1.0-9/72577_563558293672959_39183751_n.jpg?_nc_cat=101&_nc_sid=dd9801&_nc_ohc=YySniLzpf_sAX-B8YFE&_nc_ht=scontent.ffjr1-2.fna&oh=12da3f0ae2404066684d742b4f785cfc&oe=5ED9FCDA",
             "https://img.particlenews.com/image.php?type=thumbnail_1024x576&url=2zUI4r_0OJWDY4z00",
             "https://content3.jdmagicbox.com/comp/def_content/advertising_agencies/default-advertising-agencies-9.jpg",
             "https://miro.medium.com/max/895/1*2gq5_jgNSYJnLzCqIIYVGA.jpeg"]

}

Here below my registered cell that I want to make the autoscroll inside it by infinite array looping .

So can you help me how to do that?

extension HomeVC: UICollectionViewDelegate, UICollectionViewDataSource {

func setupCollectionViewCell () {
    collectionView.delegate = self ; collectionView.dataSource = self
    collectionView.register(UINib(nibName: "homeAdCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "adCell")
}


func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return array.count

}


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

    print ("Size func called")
    return CGSize(width: 250, height: 75)
}


func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "adCell", for: indexPath) as! homeAdCollectionViewCell

    cell.update(SURL: array[indexPath.row])

    return cell
}

}


Solution

    1. Set the Timer in ViewDidLoad and scroll to next item using collectionView.ScrollToitem method

    2. If you want infinite scrolling with autoscroll effect, you can check this library: https://github.com/WenchaoD/FSPagerView