lunbo.gif
思路
22.png
- cell 中的數(shù)據(jù)源一開始就只有一組4個(紅色標(biāo)注),若想一開始程序可以向左滑動瓶摆,則需往左邊再添加一組(黑色部分)岖妄。
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return _urls.count * 2;
}
滾動到第1組(下標(biāo))
dispatch_async(dispatch_get_main_queue(), ^{
NSIndexPath *index = [NSIndexPath indexPathForItem:_urls.count inSection:0];
[self scrollToItemAtIndexPath:index atScrollPosition:UICollectionViewScrollPositionLeft animated:NO];
}
ps:必須要等上面所寫的第一一個方法執(zhí)行完后才執(zhí)行這兩行代碼磅轻,否則數(shù)組下標(biāo)溢出拐格。所以放在主線程上異步執(zhí)行掉分。
*當(dāng) 滾動到第一組 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 的最后一張,則跳轉(zhuǎn)到第0組的最后一張
//第0組的第0張圖片,則跳轉(zhuǎn)到第1組的第0張圖片
}
scrollView.contentOffset = CGPointMake(offset * scrollView.bounds.size.width, 0);
}