collectionView每次滾動特定的距離(類似pagingEnabled屬性)

補一下這個文章的資源,我只后有找到了兩種其他人的實現(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容