0Pricing
Swift Academy · 강의

적응형 레이아웃을 위한 GeometryReader

상위 뷰의 기하 정보를 읽어 비례적이고 기기에 맞는 UI를 구성합니다.

적응형 레이아웃을 위한 GeometryReader은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

`GeometryReader`는 부모가 제공하는 사용 가능한 크기를 읽어 화면이나 컨테이너의 크기에 비례하는 레이아웃을 만들 수 있게 합니다.

기본 사용법

```swift GeometryReader { geo in Text("Width: \(Int(geo.size.width))") .frame(width: geo.size.width * 0.8) } ```

GeometryProxy 속성

`GeometryProxy`가 제공하는 항목: • `size: CGSize` — 사용 가능한 너비와 높이 • `safeAreaInsets: EdgeInsets` — 시스템 안전 영역 • `frame(in:)` — 지정한 좌표 공간에서의 프레임

비례 크기 조정

```swift GeometryReader { geo in HStack(spacing: 0) { Color.blue.frame(width: geo.size.width * 0.6) Color.green } } ```

좌표 공간

```swift GeometryReader { outer in VStack { GeometryReader { inner in let f = inner.frame(in: .named("outer")) Text("y: \(Int(f.minY))") } } } .coordinateSpace(name: "outer") ```

안전 영역

```swift GeometryReader { geo in VStack { Spacer() Text("Bottom safe: \(Int(geo.safeAreaInsets.bottom))") .padding(.bottom, geo.safeAreaInsets.bottom) } } ```

시차 스크롤 효과

```swift ScrollView { ForEach(items) { item in GeometryReader { geo in let offset = geo.frame(in: .global).minY Image(item.image).offset(y: offset * 0.3) } } } ```

레이아웃 정보 전달을 위한 기본 설정 키

```swift struct HeightKey: PreferenceKey { static var defaultValue: CGFloat = 0 static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) { value = max(value, nextValue()) } } ``` 자식 뷰의 크기를 뷰 계층 구조의 상위로 전달할 때 사용합니다.

GeometryReader를 피해야 할 때

`GeometryReader`는 기본적으로 사용 가능한 모든 공간을 채우므로, 주의해서 사용하지 않으면 레이아웃을 망가뜨릴 수 있습니다. 가능하면 `.frame(maxWidth:.infinity)`와 유연한 스택을 우선 사용하시기 바랍니다.

대안: 레이아웃 프로토콜

Swift 5.7+에서는 GeometryReader의 오버헤드 없이 완전히 사용자 지정 레이아웃 알고리즘을 구현할 수 있는 `Layout` 프로토콜이 도입되었습니다.

빠른 확인

`GeometryProxy.size`에는 무엇이 들어 있나요?

요약

핵심 내용: • `GeometryReader { geo in }`은 부모가 제공하는 크기를 읽습니다 • `geo.size` — 너비와 높이, `geo.safeAreaInsets` — 시스템 안쪽 여백 • `frame(in:)` — 이름이 지정된 좌표 공간이나 전역 좌표 공간에서의 위치 • 크기를 상위로 전달하려면 PreferenceKeys를 사용합니다 • 가능하면 GeometryReader보다 유연한 레이아웃을 우선 사용합니다 과정을 모두 마쳤습니다! 다음 주제: SwiftUI 데이터 흐름입니다.

자주 묻는 질문

“적응형 레이아웃을 위한 GeometryReader” 강의는 무료인가요?

네 — “적응형 레이아웃을 위한 GeometryReader” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“적응형 레이아웃을 위한 GeometryReader”에서 뭘 배우나요?

상위 뷰의 기하 정보를 읽어 비례적이고 기기에 맞는 UI를 구성합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“적응형 레이아웃을 위한 GeometryReader” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. VStack, HStack 및 ZStack 기초
  2. LazyVGrid 및 LazyHGrid
  3. Spacer, 패딩 및 프레임 수정자
  4. 적응형 레이아웃을 위한 GeometryReader
← Swift Academy(으)로 돌아가기