概要
- 一画面に複数の3つのcollection view(collectionView1,collectionView2,collectionView3とする)があるとする
- collectionView1とcollectionView2は縦軸の動きがそれぞれ連動、collectionView1とcollectionView3は横軸の動きがそれぞれ連動する仕様
- という画面を作ろうとして少しつまづいたのでメモ書き
方法
/// 縦横スクロールを同期する
private func syncronizeScroll(scrollView: UIScrollView) {
// 縦スクロール
if scrollView == collectionView1 {
collectionView2.contentOffset.y = collectionView1.contentOffset.y
}
if scrollView == collectionView2 {
collectionView1.contentOffset.y = collectionView2.contentOffset.y
}
// 横スクロール
if scrollView == collectionView1 {
collectionView3.contentOffset.x = collectionView1.contentOffset.x
}
if scrollView == collectionView3 {
collectionView1.contentOffset.x = collectionView3.contentOffset.x
}
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
syncronizeScroll(scrollView: scrollView)
}
- 当初はsetContentで実装していたが、スクロールはするけど慣性スクロールが全くしない状況だった(スワイプしたらすぐ止まるような感じ)
- おそらく処理が重すぎたためと思われたので、setContentOffsetではなく直接contentOffsetを設定する方法で実装