Ios 松开滚动后将UICollectionView滚动到特定点
当用户放弃在UICollectionView中滚动时,我希望它滚动到相关点。在本例中,我将使用Ios 松开滚动后将UICollectionView滚动到特定点,ios,swift,uiscrollview,uicollectionview,Ios,Swift,Uiscrollview,Uicollectionview,当用户放弃在UICollectionView中滚动时,我希望它滚动到相关点。在本例中,我将使用CGPoint(x:0,y:100) 我以前尝试过这样做: func scrollViewWillBeginDecelerating(scrollView: UIScrollView) { self.collectionView.setContentOffset(CGPoint(x: 0, y: 100), animated: true) } 但这会产生一个以曲线开始的动画。如果用户在拖动时松
CGPoint(x:0,y:100)
我以前尝试过这样做:
func scrollViewWillBeginDecelerating(scrollView: UIScrollView) {
self.collectionView.setContentOffset(CGPoint(x: 0, y: 100), animated: true)
}
但这会产生一个以曲线开始的动画。如果用户在拖动时松开,这将产生一种奇怪的外观,因为当他们抬起手指时,拖动突然停止,然后再次开始移动
所以我试着用我自己的动画来做这件事:
UIView.animateWithDuration(
0.3,
delay: 0,
options: UIViewAnimationOptions.CurveEaseOut,
animations: {
() -> Void in
self.collectionView.setContentOffset(CGPoint(x: 0, y: 100), animated: false)
}, completion: nil)
动画就像我想要的那样发生,但是动画结束时屏幕外的细胞会立即消失。如果我用contentOffset=
替换setContentOffset()
,也会发生同样的情况
因此有人建议我改为使用ScrollViewWillendDraging:withVelocity:targetContentOffset:
方法。所以我做了:
func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
targetContentOffset.memory = CGPoint(x: 0, y: 100)
}
func ScrollViewWillendDraging(scrollView:UIScrollView,withVelocity:CGPoint,targetContentOffset:UnsafemeutablePointer){
targetContentOffset.memory=CGPoint(x:0,y:100)
}
现在的情况是,动画以给定的速度出现,因此如果用户抬起手指,它就会以0的速度缓慢地到达所需的位置。问题是什么?问题是:如何使其动画化到特定的点,就像在我的第二个代码示例中一样,但不会使集合视图单元消失。