【Swift UI】ScrollViewを任意の位置までスクロールさせる方法!ScrollViewReader

この記事からわかること

  • Swift UIScrollView任意位置までスクロールさせる方法
  • ScrollViewReader使い方
  • idモディファイア

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

ScrollViewで任意の位置までスクロールさせる方法

ScrollViewで任意の位置のビューをスクロールさせて表示させたい場合ScrollViewReaderを使用します。ScrollView内のViewにはidモディファイアで一意の識別子を付与しておき、scrollToメソッドでid値を指定することで自動でスクロールさせることができます。

ScrollViewReader { reader in
    Button {
        withAnimation {
            reader.scrollTo(60)
        }
    } label: {
        Text("60番目へ")
    }

    ScrollView {
        ForEach((1...100), id: \.self) { num in
            Text("Item\(num)")
                .id(num)
        }
    }
}

ただし表示される状態なるまでスクロールされるようなので指定したidのビューがスクロールビューの中心に来るわけではないようなので注意してください。

セクションごとに指定してスクロール

idモディファイアには文字列も渡せるのでセクションごとに名前をつけておき、スクロールさせることも可能です。

 ScrollViewReader { reader in
    Button {
        withAnimation {
            reader.scrollTo("セクション2")
        }
    } label: {
        Text("セクション2へ")
    }

    ScrollView {
        VStack {}.id("セクション1")
        VStack {}.id("セクション2")
        VStack {}.id("セクション3")
        VStack {}.id("セクション4")
        
    }
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index