【发布时间】:2014-05-13 20:12:28
【问题描述】:
用户执行快速滑动手势以使 UICollectionView 开始滚动(它将逐渐停止)。
如何以编程方式强制滚动立即停止? 澄清一下,我想允许减速,但我需要能够在代码中停止它。
【问题讨论】:
标签: ios objective-c uicollectionview
用户执行快速滑动手势以使 UICollectionView 开始滚动(它将逐渐停止)。
如何以编程方式强制滚动立即停止? 澄清一下,我想允许减速,但我需要能够在代码中停止它。
【问题讨论】:
标签: ios objective-c uicollectionview
试试这个。为我工作。 :)
self.collectionView.scrollEnabled = NO;
【讨论】:
您是否尝试过以下方法?
[self.collectionView setContentOffset:self.collectionView.contentOffset animated:NO];
contentOffset 属性会随着 collectionView 滚动(甚至通过动画)不断更新,因此在调用上述内容时,它应该希望强制 collectionView 停止其现有动画。
【讨论】:
CGPoint offset = self.collectionView.contentOffset; (self.collectionView.contentOffset.y > 0) ? offset.y-- : offset.y++; [self.collectionView setContentOffset:offset animated:NO];
对于 Swift 3:
collectionView.isScrollEnabled = false
【讨论】:
如果您将pagingEnabled 和scrollEnabled 属性设置为true,那么这应该可以:
self.collectionView.scrollEnabled = false
self.collectionView.pagingEnabled = false
【讨论】:
当用户松开拖动collectionView时,采用如下scrollViewDelegate方法拾取。
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset;
然后,您可以创建自己的动画块,使用contentOffset 属性设置您认为最好的速度/最终目的地。
【讨论】:
self.collectionView.contentOffset = CGPointZero; 将内容偏移设置到开头,但不会中止动画。它只是从 0,0 开始。