系統(tǒng)自帶的PagingEnabled會把scrollView/collectionView的contentSize平均分割成幾部分们颜,每頁滑動的距離不能自己控制,如下面的演示圖片,每頁滑動的距離是 cell.width + itemSpacing + 下一個cell的一小部分砰盐,這里將介紹如何自定義每頁滑動的距離:
??不要將系統(tǒng)的pagingEnabled設置為YES
主要代碼:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
CGFloat destinationX = targetContentOffset->x;
CGFloat pageWidth = self.itemWidth + 20;
CGFloat movedX = destinationX - pageWidth * self.selectedIndex;
if (movedX < -pageWidth * 0.5) {
// Move left
self.selectedIndex--;
} else if (movedX > pageWidth * 0.5) {
// Move right
self.selectedIndex++;
}
if (ABS(velocity.x) >= 2){
targetContentOffset->x = pageWidth * self.selectedIndex;
} else {
targetContentOffset->x = scrollView.contentOffset.x;
[scrollView setContentOffset:CGPointMake(pageWidth * self.selectedIndex, scrollView.contentOffset.y) animated:YES];
}
}