【Swift4】UIScrollViewのデリゲート、スクロール開始・中・停止、ズーム開始・中・停止まとめ【iOS11】

UIScrollViewはデリゲートメソッドが多く、どれを使えばいいのか迷いがちなので、デリゲートメソッドを「ドラッグによるスクロール」「ズーム」「その他」の3種類に分類し、それぞれのライフサイクルについてもまとめました。

もくじ

  1. スクロールした時に呼ばれるデリゲートメソッド
  2. ズームした時に呼ばれるデリゲートメソッド
  3. その他のデリゲートメソッド

1.タップ(ドラッグ)してスクロールをした時に呼ばれるデリゲートメソッド

スクロール時のデリゲートメソッドのライフサイクル

  1. scrollViewWillBeginDragging(_ scrollView: UIScrollView)
    タップしスクロール開始
  2. scrollViewDidScroll(_ scrollView: UIScrollView)
    スクロール中(画面に指が触れている状態)
  3. scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>)
    タップ終了開始時
  4. scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool)
    タップ終了時
  5. scrollViewWillBeginDecelerating(_ scrollView: UIScrollView)
    慣性によるスクロール開始時
  6. scrollViewDidScroll(_ scrollView: UIScrollView)
    スクロール中(画面から指が離れ、慣性によるスクロールになっている状態)
  7. scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
    慣性によるスクロール停止時(完全停止)

スクロール時のデリゲートメソッド

 

2.ズームした時に呼ばれるデリゲートメソッド

ズーム時のデリゲートメソッドのライフサイクル

  1. scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?)
    ズーム開始
  2. scrollViewDidZoom(_ scrollView: UIScrollView)
    ズーム中
  3. scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat)
    ズーム終了時

ズーム時のデリゲートメソッド

 

3.その他のデリゲートメソッド