无限轮播
func setDataList(data: Array<Any>) {
dataList = data
if loop && dataList.count > 1{
resetDataSource()
}
else {
myCollectionView?.reloadData()
}
}
func resetDataSource() {
// 0 1 2 3 4
// 0 1 2 3 4 0
// 4 0 1 2 3 4 0
dataList.append(dataList.first!)
dataList.insert(dataList[dataList.count - 2], at: 0)
myCollectionView?.reloadData()
//从第二张开始
myCollectionView?.scrollToItem(at: IndexPath.init(item: 1, section: 0), at: .left, animated: false)
}
// 用户手指触摸产生的滚动才会调用该方法
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
redirectPosition()
}
func redirectPosition() {
let currentIndex = Int((myCollectionView?.contentOffset.x)! / (myCollectionView?.frame.size.width)!)
print("当前index:\(currentIndex)")
//滚动到第一张时,无感切换到倒数第二张
if currentIndex == 0 {
myCollectionView?.scrollToItem(at: IndexPath.init(item: dataList.count - 2, section: 0), at: .left, animated: false)
}
//滚动到最后一张时,无感切换到正数第二张
if currentIndex == dataList.count - 1 {
myCollectionView?.scrollToItem(at: IndexPath.init(item: 1, section: 0), at: .left, animated: false)
}
}