中午好
我需要沿一个方向滚动uicollection视图单元格。
例如:-
我有4个数据值的数组-> [“ apple”,“ pen”,“ book”,“ bottle”]。
我需要像这样滚动Uicollectionview单元格:
苹果->笔->书->瓶子->苹果->笔->书->瓶子->继续。
我使用此代码进行自动滚动,但在我的情况下,集合视图滚动如下:
苹果->笔->书->瓶子<-(滚动回到第一个索引)苹果->笔->书->瓶子
代码:
<id name="employeeId" column="EMPLOYEE_ID">
<generator class="increment"/>
</id>
谢谢。
答案 0 :(得分:1)
1)从“ collectionView:numberOfItemsInSection:”返回一些非常大的数字,例如NSIntegerMax
2)在“ collectionView:cellForItemAtIndexPath”中,而不仅仅是使用%运算符直接索引到数据源数组中以获取填充单元格的数据。即做
let item = datasource[indexPath.row % dataSource.count]
代替:
let item = datasource[indexPath.row]
这将为您提供无限的圆形collectionView
答案 1 :(得分:0)
如果您只想在右侧滚动,则可以执行以下操作:
1)将第一个对象添加到最后一个
["apple","pen","book","bottle","apple"]
2)现在,您已经实现了与collectionView相关的委托dataSource方法,因此,其中没有任何变化。
3)现在,由于这是自动滚动的,当最后一个索引到达时,您应该滚动到没有动画的第一个索引。
@objc func scrollAutomatically(_ timer1: Timer) {
if let coll = CV_Slider {
for cell in coll.visibleCells {
let indexPath: IndexPath? = coll.indexPath(for: cell)
//0,1,2,3,4
if ((indexPath?.row)! < self.arr_img_Slide.count - 1) {
let indexPath1: IndexPath?
indexPath1 = IndexPath.init(row: (indexPath?.row)! + 1, section: (indexPath?.section)!)
coll.scrollToItem(at: indexPath1!, at: .centeredHorizontally, animated: true)
if indexPath1.row == self.arr_img_Slide.count - 1 {
let indexPath2: IndexPath?
indexPath2 = IndexPath.init(row: 0, section: (indexPath?.section)!)
coll.scrollToItem(at: indexPath2!, at: .centeredHorizontally, animated: false)
}
}
}
}
}
尝试并分享您的结果。