# 지오메트리 리더

지오메트리 리더는 부모가 기본적으로 갖는 레이아웃 수치를 기반으로 자식 레이아웃의 구체적인 사이즈를 결정할 수 있게 해준다.

VStack에 두개의 Color뷰가 배치된다고 생각해보자.

VStack(spacing: 0) {
    Color.red
    Color.yellow
}

이렇게 되면 VStack안에서 두개의 컬러뷰가 공평하게 두 공간을 쪼개어 갖는 것이 SwiftUI에서의 기본 레이아웃이다.

스택뷰를 3등분하여 Color.red가 2/3 영역을 차지하도록 코드를 작성하고싶다면 지오메트리 리더를 사용하면 된다.

GeometryReader { layout in
    VStack(spacing: 0) {
        Color.red
            .frame(height: layout.size.height * 0.67)

        Color.yellow
    }
}

# Reference

  1. Hacking with swift - How to provide relative sizes using geometryReader (opens new window)