LoginSignup
2
1

More than 3 years have passed since last update.

【swift】複数のTableViewやCollectoinViewのスクロールを同期する方法

Last updated at Posted at 2021-04-19

概要

  • 一画面に複数の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を設定する方法で実装
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1