Ios Swift CollectionView设置了滚动的位置

Ios Swift CollectionView设置了滚动的位置,ios,swift,collections,Ios,Swift,Collections,所以我有一个水平的集合视图,我想当用户滚动到我想要的地方设置滚动 @IBOutlet var joke_cards: UICollectionView! extension ViewController: UIScrollViewDelegate{ func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeM

所以我有一个水平的集合视图,我想当用户滚动到我想要的地方设置滚动

@IBOutlet var joke_cards: UICollectionView!

extension ViewController: UIScrollViewDelegate{

    func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

        joke_cards.contentOffset.x = scrollView.contentOffset.x + 1000
        joke_cards.reloadData()

    }

}
但这不起作用,它会正常滚动,我想指定滚动多少,有什么建议吗


因此,我想我需要更清楚一点,我想要的是水平翻转一些卡片,这就是为什么当用户开始滑动时,我需要在中间显示下一个单元格

如果要手动将用户滚动到某个区域,首先需要定义需要滚动到视图中的区域。这取决于您尝试滚动的确切位置,但如果目标只是向右滚动1000个点,则可以定义rect并按如下方式滚动:

let destinationRect = CGRect(x: scrollView.contentOffset.x + 1000, y: scrollView.contentOffset.y, width: 1, height: 1)
scrollView.scrollRectToVisible(destinationRect, animated: true)
请注意,只要rect的任何部分可见,滚动就会停止,因此如果希望contentOffset.x+1000位于中心位置,则需要进行更多的计算来创建destinationRect

另一个选项是,由于您使用的是UICollectionView,因此可以确定哪个单元格位于要滚动到的位置,并将该单元格滚动到特定位置。在本例中,我在指定的点安全地展开可选的indexPath,并在collectionView中滚动该单元格使其水平居中:

if let indexPath = self.joke_cards.indexPathForItem(at: CGPoint(x: scrollView.contentOffset.x, y: scrollView.frame.midY)) {
    self.joke_cards.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true)
}

它怎么不起作用?到底发生了什么事?没什么。。它可以正常滚动。。我想指定滚动的次数您确定ScrollViewWillendDraging是实现目标的正确方法吗?ScRelVIEW DestDeloDy怎么样?谢谢,它有点用ScLotoTobe和ScLabVIEW DestDeloDy,但是它不能正常工作,它应该在中间显示下一个笑话,并预览左和右,正如你在这里可以看到的:ScEncast.com /T/GV41NWXDVKS它跳过一些卡。和那个金发女郎一样,有什么建议吗?谢谢,它有点用ScLotoTobe和ScLabVIEW DestDeloDy,但是它不能正常工作,它应该在中间显示下一个笑话,并预览左右,正如你在这里可以看到的:它跳过一些卡片。像那个金发女孩,有什么建议吗?@Uffo我不太明白你到底想做什么,但是如果有一个特定的单元格你想滚动到屏幕的中间,你只需要得到它的索引,不管你怎么选择,调用scrollToItem,它水平居中。你知道你试图将用户滚动到哪个单元吗?嗯,用户向左或向右滚动,我希望下一个项目在中间居中,但是如果你现在看,它没有滚动正确,有时它滚动太多,我也启用了分页,你可以在这里看到:我想要实现的是什么?你想要实现的是,如果用户滚动到正确的位置,它就会转到下一个项目,不管他们尝试滚动多少次?是的,这正是我想要的