【Swift UI】独自カルーセルUIの実装方法!スワイプでコンテンツを切り替え

この記事からわかること
- Swift UIでカルーセルUIを実装するには?
- @GestureStateの使い方
- ドラッグ(スワイプ)したビューを移動させる方法
\ アプリをリリースしました /
環境
- Xcode:15.0.1
- iOS:17.0
- Swift:5.9
- macOS:Sonoma 14.1
カルーセルとは?
カルーセルとはスライドやタップなどによってコンテンツをスライドさせて複数のコンテンツを表示するビューのことです。自動でコンテンツをスライドさせるものはスライドショーなどと呼ばれたりします。
Swift UIでスワイプすることで表示しているコンテンツが切り替わるようなビューを実装してみたので実装方法をまとめておきます。

Swift UIで実装してみる
仕組み
- HStackはコンテンツ全体の大きさになる
- 表示エリアはページ1つ分(clippedして余分な部分が表示されないように)
- スワイプ中はdragOffsetに変化量を格納しHStackを一時的にずらす
- スワイプ完了後は「currentIndex * width」分だけHStackをずらす

実際に使用する際は以下のように使用します。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。