class SnappingFlowLayout: UICollectionViewFlowLayout { private var firstSetupDone = false override func prepare() { super.prepare() if !firstSetupDone { setup() firstSetupDone = true } } private func setup() { scrollDirection = .vertical minimumLineSpacing = 20 itemSize = CGSize(width: collectionView!.bounds.width, height: 350) collectionView!.decelerationRate = UIScrollViewDecelerationRateFast } }