タネは簡単で(1)先頭と最後にコンテンツの複製を作っておき追加(2)最後へスクロールしたら先頭へ移動・先頭へスクロールしたら最後へ移動する。
スクロール指示のタイミングは -[UIScroll scrollViewDidEndDecelerating:] でハンドリングする。
-(void)scrollViewDidEndDecelerating:(UIScrollview *)scrollview {
// Calculate where the collection view should be at the right-hand end item
float contentOffsetWhenFullyScrolledRight = self.collectionView.frame.size.width * ([self.dataArray count] -1);
if (scrollView.contentOffset.x == contentOffsetWhenFullyScrolledRight) {
// user is scrolling to the right from the last item to the 'fake' item 1.
// reposition offset to show the 'real' item 1 at the left-hand end of the collection view
NSIndexPath *newIndexPath = [NSIndexPath indexPathForItem:1 inSection:0];
[self.collectionView scrollToItemAtIndexPath:newIndexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:NO];
} else if (scrollView.contentOffset.x == 0) {
// user is scrolling to the left from the first item to the fake 'item N'.
// reposition offset to show the 'real' item N at the right end end of the collection view
NSIndexPath *newIndexPath = [NSIndexPath indexPathForItem:([self.dataArray count] -2) inSection:0];
[self.collectionView scrollToItemAtIndexPath:newIndexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:NO];
}
}なおこの方法が使えるのは paging=YES のケースだけ。



