[SwiftUI]ビューの位置やサイズを取得するGeometryReader

SwiftUI
スポンサーリンク
スポンサーリンク

ビューの位置やサイズを取得する方法

プログラマ, プログラミング, コード, 仕事, コンピュータ, インターネット, 技術, コーディング

SwiftUIでは、GeometryReaderを使うことによって、ビューの位置やサイズを取得することが出来ます。

GeometryReaderは、位置やサイズを知りたいビューをクロージャーにし、クロージャーの引数で位置やサイズを取得します。

ビューのサイズを取得するには?

ビューのサイズは、クロージャーの引数のsizeプロパティで取得します。

GeometryReader { geometry in
            
            VStack(alignment: .center) {
                Text("\(geometry.size.debugDescription)")
                    .padding()
                
                Text("width : \(geometry.size.width), height : \(geometry.size.height)")
                    .padding()
            }
            
        }

引数をgeometryとして、ビューのサイズや位置を取得しています。

そして、sizeプロパティでTextビューのサイズを表示しています。

このように、ビューのサイズは、sizeプロパティで取得します。

ビューの位置を取得するには?

ビューの位置は、ビューの座標空間を受けとってから取得します。

ビューの座標空間はframeメソッドで取得します。

そして、座標はoriginプロパティを使って取得します。

iOSの座標は、左上からx座標とy座標で計算されます。

GeometryReader { geometry in
            
            VStack(alignment: .center) {
                Text("\(geometry.frame(in: .global).origin.debugDescription)")
                    .padding()
                
                Text("x : \(geometry.frame(in: .global).origin.x), y : \(geometry.frame(in: .global).origin.y)")
                    .padding()
                
                Text("\(geometry.frame(in: .local).origin.debugDescription)")
            }
            
        }

geometryの.frameメソッドで座標空間を取得しています。

inの後に記述しいる「.global」と「.local」は座標空間の指定です。

.globalはビュー全体の座標空間、.localはビュー自体のフレームの座標空間です。

originプロパティで座標空間での座標を取得しています。


世界最大級のオンライン学習サイトUdemy

まとめ

ビューの位置やサイズは、GeometryReaderを使って取得します。

サイズにはsizeプロパティ、位置にはframeメソッドを使います。

おすすめの記事

コメント

タイトルとURLをコピーしました