我创建了一个有4个单元格的CollectionView,单元格框架等于整个窗口框架,这样我就可以像PageViewController一样滚动它们。
lazy var collectionView : PagesCollectionView = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.minimumLineSpacing = 0
let collectionView = PagesCollectionView(frame: .zero, collectionViewLayout: layout)
collectionView.delegate = self
collectionView.dataSource = self
collectionView.isPagingEnabled = true
collectionView.alwaysBounceHorizontal = false
return collectionView
}()
我想达到的目标是,当我在第一个单元格并向左滚动(contentOffset为负值)时,CollectionView停止滚动,当我在最后一个单元格时,CollectionView停止向右滚动,我想看到的是单元格仍然存在。
我尝试了不同的程序:这个程序只是在首先滚动了滚动View之后才阻止了它,从来没有重新启用其他方向的滚动。
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if(scrollView.contentOffset.x == 0){
scrollView.isScrollEnabled = false
}
}
正如其他StackOverflow主题中所建议的那样。
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
if(scrollView.contentOffset.x == 0){
collectionView.isScrollEnabled = false
}
collectionView.isScrollEnabled = true
}
但这只是阻止了两个方向的滚动。 我实际上不知道如何解决这个问题。
其实我已经知道如何解决这个问题了,真的很简单。
在我设置collectionView的viewDidLoad方法中,我设置bounces等于false。
collectionView.bounces = false