補一下這個文章的資源,我只后有找到了兩種其他人的實現(xiàn),加上我的實現(xiàn)一共三種方式(我的最垃圾了,別在意這些細節(jié))然后放在了https://github.com/sweetKnight/ScrollerViewPage這個地址里。
還是先說說,具體的情況是怎么樣的,
剛剛開始的樣子,然后要求一滑動就滑動到第二個圖


第一眼看到這個要求,我就想到了pagingEnabled屬性,但是pagingEnabled屬性是一滾動一屏幕并不是一個特定的距離,然后查了一下發(fā)現(xiàn)也不能改,好吧屈服了,自己用rollerView的滑動代理自己做了個這樣的效果。還不錯,遇見這種需求的可以看看,
實現(xiàn)下面的代理
//系統(tǒng)動畫停止是刷新當前偏移量_offer是我定義的全局變量
-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
_offer = scrollView.contentOffset.x;
NSLog(@"end========%f",_offer);
}
//滑動減速是觸發(fā)的代理,當用戶用力滑動或者清掃時觸發(fā)
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
if (fabs(scrollView.contentOffset.x -_offer) > 10) {
if (scrollView.contentOffset.x > _offer) {
int i = scrollView.contentOffset.x/([UIScreen mainScreen].bounds.size.width - 30)+1;
NSIndexPath * index = ?[NSIndexPath indexPathForRow:i inSection:0];
[_collectionView scrollToItemAtIndexPath:index atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
}else{
int i = scrollView.contentOffset.x/([UIScreen mainScreen].bounds.size.width - 30)+1;
NSIndexPath * index = ?[NSIndexPath indexPathForRow:i-1 inSection:0];
[_collectionView scrollToItemAtIndexPath:index atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
}
}
}
//用戶拖拽是調(diào)用
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
if (fabs(scrollView.contentOffset.x -_offer) > 20) {
if (scrollView.contentOffset.x > _offer) {
int i = scrollView.contentOffset.x/([UIScreen mainScreen].bounds.size.width - 30)+1;
NSIndexPath * index = ?[NSIndexPath indexPathForRow:i inSection:0];
[_collectionView scrollToItemAtIndexPath:index atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
}else{
int i = scrollView.contentOffset.x/([UIScreen mainScreen].bounds.size.width - 30)+1;
NSIndexPath * index = ?[NSIndexPath indexPathForRow:i-1 inSection:0];
[_collectionView scrollToItemAtIndexPath:index atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];
}
}
}
寫完這些你可能發(fā)現(xiàn)效果不好,原因是系統(tǒng)的減速點太大了我們改小點就好了
_collectionView.decelerationRate = 10;//我改的是10