【问题标题】:Force UICollectionView to stop scrolling强制 UICollectionView 停止滚动
【发布时间】:2014-05-13 20:12:28
【问题描述】:

用户执行快速滑动手势以使 UICollectionView 开始滚动(它将逐渐停止)。

如何以编程方式强制滚动立即停止? 澄清一下,我想允许减速,但我需要能够在代码中停止它。

【问题讨论】:

    标签: ios objective-c uicollectionview


    【解决方案1】:

    试试这个。为我工作。 :)

    self.collectionView.scrollEnabled = NO;
    

    【讨论】:

    • 他们仍然可以点击项目以滚动到它们:/
    【解决方案2】:

    您是否尝试过以下方法?

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

    contentOffset 属性会随着 collectionView 滚动(甚至通过动画)不断更新,因此在调用上述内容时,它应该希望强制 collectionView 停止其现有动画。

    【讨论】:

    • 不起作用,需要更改 y 或 x 值。我使用了它并且它有效:CGPoint offset = self.collectionView.contentOffset; (self.collectionView.contentOffset.y > 0) ? offset.y-- : offset.y++; [self.collectionView setContentOffset:offset animated:NO];
    【解决方案3】:

    对于 Swift 3:

    collectionView.isScrollEnabled = false
    

    【讨论】:

      【解决方案4】:

      如果您将pagingEnabledscrollEnabled 属性设置为true,那么这应该可以:

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

      【讨论】:

        【解决方案5】:

        当用户松开拖动collectionView时,采用如下scrollViewDelegate方法拾取。

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

        然后,您可以创建自己的动画块,使用contentOffset 属性设置您认为最好的速度/最终目的地。

        【讨论】:

        • 这不适合我的场景。我需要能够随时中断动画。
        • 哈哈好吧,然后随时设置 contentOffset 属性。它会强制它停止。
        • self.collectionView.contentOffset = CGPointZero; 将内容偏移设置到开头,但不会中止动画。它只是从 0,0 开始。
        • 你必须做 setContentOffSet:yourOffset animated:NO
        猜你喜欢
        • 2015-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-12
        • 1970-01-01
        • 1970-01-01
        • 2011-03-25
        相关资源
        最近更新 更多