2014-05-13 120 views

回答

20

您是否嘗試過以下方法?

[self.collectionView setContentOffset:self.collectionView.contentOffset animated:NO]; 

contentOffset屬性被不斷更新的滾動的CollectionView(甚至通過動畫),所以在調用上面的時候,它應該有希望強制的CollectionView停止其現有動畫。

+2

無法使用,需要更改y或x值。 我用這個,它的工作原理: 'CGPoint offset = self.collectionView.contentOffset; (self.collectionView.contentOffset.y> 0)? offset.y--:offset.y ++; [self.collectionView setContentOffset:offset animated:NO];' –

1

當用戶放開拖動collectionView時,採用以下scrollViewDelegate方法取出。

-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset; 

然後,您可以只創建自己的動畫塊來設定爲準速度/最終目的地你認爲最好看使用contentOffset財產。

+0

這將不適合我的場景。我需要能夠隨時中斷動畫。 –

+1

哈哈好吧,然後只需在任何時候設置contentOffset屬性。它會迫使它停止。 –

+0

'self.collectionView.contentOffset = CGPointZero;'將內容偏移設置爲開頭,但不會中止動畫。它只是從0,0開始。 –

25

試試這個。爲我工作。 :)

self.collectionView.scrollEnabled = NO; 
+0

他們仍然可以點擊項目以滾動到他們:/ –

0

如果你有 「pagingEnabled」 和 「scrollEnabled」 屬性設置爲 「真」 比這應該工作:

self.collectionView.scrollEnabled = false 
    self.collectionView.pagingEnabled = false 
2

對於斯威夫特3:

collectionView.isScrollEnabled = false