今私はUICollectionViewを水平ページングで設定しました。私はあなたがスクロールしている場合を除き、1つしか表示されないように画面に合わせてセルのサイズを決めました。UICollectionViewのどのページが表示されますか?
私がしたいのは、スクロールを停止した後に表示されているセルのインデックスパスを取得することです。これは、ビューの他の部分が現在表示されている情報に依存しているためです。
私はscrollViewWillBeginDecelerating関数で関数を設定していますが、私は閉じていますが、まだどのようにセルをつかんでいるのかわかりません。
func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
if(lastContentOffset > scrollView.contentOffset.x && lastPointVisited > 0)
{
lastPointVisited -= 1
print("Scrolling Right")
}
else if(lastContentOffset < scrollView.contentOffset.x && lastPointVisited < myPoints.count - 1)
{
lastPointVisited += 1
print("Scrolling Left")
}
lastContentOffset = scrollView.contentOffset.x
}
スクロールに非常に注意が必要な場合は、これにより正確な結果が得られます。高速になるか、半分しかページをスクロールしないようにスクロールして、すべてをスローするように見えます。
なぜ、 'scrollViewDidScroll'や' scrollViewDidEndScrollingAnimation 'の代わりに 'scrollViewWillBeginDecelerating'を使用していますか? '。あなたが実際に観察していることは、あなたが観察することを期待しているものではないことはあなたの質問からは明らかではありません。実際の問題は何ですか? 「放棄」とは何ですか? –
代わりに 'UIPageViewController'を使わないのはなぜですか? – Sweeper
私は 'scrollViewWillBeginDecelerating'を使用していました。コレクションビューで次に来るものに基づいて地図を移動したいからです。下の回答から@RajatJangraのアドバイスを守った後、スクロールが完了して問題が解決するまで、タイミングに差がなく、待っていることがわかります。 –