【Swift/UIKit】UIScrollViewで指定したビューを表示するまでスクロールさせる方法!scrollRectToVisible

この記事からわかること
- Swift/UIKitでUIScrollViewを任意の位置までスクロールさせる方法
- scrollRectToVisibleの使い方
- setContentOffsetとの違い
index
[open]
\ アプリをリリースしました /
環境
- Xcode:15.4
- iOS:17.0
- Swift:5.9
- macOS:Sonoma 14.6.1
UIScrollViewで指定したViewまでスクロールさせる方法
UIScrollView
で任意のビューが表示されるように自動スクロールさせるにはscrollRectToVisible
メソッドを使用します。
公式リファレンス:UIScrollView.scrollRectToVisible
第一引数にスクロールビュー内で表示させたい領域をCGRect型で渡し、第二引数には自動スクロール時のアニメーションのON/OFFを指定します。
実際に使用する場合は以下のように表示したいビューのframe
プロパティを渡せばそのビューがある位置までスクロールしてくれます。
ただこの自動スクロールはそのビュー(領域)がが表示されるまでスクロールされ流だけなので画面の一番下に表示されたタイミングでスクロールが止まってしまうので注意してください。

UIScrollViewで任意の位置までスクロールさせる方法
UIScrollView
で任意の位置まで自動スクロールさせるにはsetContentOffset
メソッドを使用します。
公式リファレンス:UIScrollView.setContentOffset
第一引数にスクロールビューの表示位置(オフセット)をCGPoint型で渡し、第二引数には自動スクロール時のアニメーションのON/OFFを指定します。
こちらはCGPoint
型でオフセット位置を指定できるのでより厳密な位置へのスクロールコントロールが可能なので計算して座標を割り出せば特定のビューを画面の中心に持ってくることも可能です。

scrollRectToVisibleとsetContentOffsetの違いと使い分け
scrollRectToVisible
とsetContentOffset
は「スクロールビューを自動スクロールする」という機能ですが条件と目的が異なります。
条件
- scrollRectToVisible:矩形で指定してそれが表示されるようにスクロール
- setContentOffset:座標で指定してその座標位置までスクロール
目的
- scrollRectToVisible:特定のビューや領域をユーザーに見せたい場合に活用
- setContentOffset:カスタムなスクロール位置が必要な場合に活用
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。