見出し画像

SWiftUIでいこう- GeometryReader

チュートリアルをやっていく中で"GeometryReader"というのが出てきました。少し使い方をみていきます。

Viewのサイズを取得する時に使うようです。

以下サイトをXcodeで試してみます。

struct ContentView: View {
   var body: some View {
       GeometryReader{geometry in
           
           Text("\(Int(geometry.size.width)) x \(Int(geometry.size.height))")
  
       }
   }
}

として実行してみると、Preview画面には

画像1

という感じで画面サイズが表示されました。

で紹介されていることを試してみます。

HStack(spacing: 0) {
       Text("Left")
          .frame(width: geometry.size.width / 2, height: 50)
          .background(Color.green)
       Text("Right")
          .frame(width: geometry.size.width / 2, height: 50)
          .background(Color.blue)
    }

実行すると

画像2

という感じに画面の幅を取得して半分ずつに表示されるようになりました。UIKitのUIScreenでも同じことができます。

.frame(width: UIScreen.main.bounds.width / 2, height: 200)

というようになります。

GeometryReaderは、親Viewのサイズや自身の座標を知ることができるので、アニメーションやインタラクティブなUIを実現するには欠かせない技術となる。自身のViewに対する親Viewが何かを把握して実装することが肝になりそうだ。

というふうにまとめてあります。

この記事が気に入ったらサポートをしてみませんか?