思路
- cell 中的数据源一开始就只有一组4个(红色标注),若想一开始程序可以向左滑动,则需往左边再添加一组(黑色部分)。
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return _urls.count * 2;
}
滚动到第1组(下标)
dispatch_async(dispatch_get_main_queue(), ^{
NSIndexPath *index = [NSIndexPath indexPathForItem:_urls.count inSection:0];
[self scrollToItemAtIndexPath:index atScrollPosition:UICollectionViewScrollPositionLeft animated:NO];
}
ps:必须要等上面所写的第一一个方法执行完后才执行这两行代码,否则数组下标溢出。所以放在主线程上异步执行。
*当 滚动到第一组 cell 最后一张时,或者第0组的第0张图片时
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
//currentPage
NSInteger offset = scrollView.contentOffset.x / self.bounds.size.width;
if (offset == 0 || offset == [self numberOfItemsInSection:0] - 1) {
//NSLog(@"%ld",offset);
offset = offset == 0? _urls.count : _urls.count - 1;
//第一组 cell 的最后一张,则跳转到第0组的最后一张
//第0组的第0张图片,则跳转到第1组的第0张图片
}
scrollView.contentOffset = CGPointMake(offset * scrollView.bounds.size.width, 0);
}