0Pricing
Swift Academy · Lesson

GeometryReader for Adaptive Layouts

Reading parent geometry to build proportional and device-adaptive UIs.

GeometryReader for Adaptive Layouts is a free Swift Academy lesson on CoddyKit — lesson 4 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Swift Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Welcome

`GeometryReader` reads the available size from the parent, letting you build layouts proportional to screen or container dimensions.

Basic Usage

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

GeometryProxy Properties

`GeometryProxy` provides: • `size: CGSize` — available width and height • `safeAreaInsets: EdgeInsets` — system safe area • `frame(in:)` — frame in a given coordinate space

Proportional Sizing

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

Coordinate Spaces

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

Safe Area

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

Parallax Scroll Effect

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

Preference Keys for Layout Communication

```swift struct HeightKey: PreferenceKey { static var defaultValue: CGFloat = 0 static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) { value = max(value, nextValue()) } } ``` Use to communicate child sizes up the view hierarchy.

When to Avoid GeometryReader

`GeometryReader` defaults to filling all available space — it can break layouts if used carelessly. Prefer `.frame(maxWidth:.infinity)` and flexible stacks when possible.

Alternative: Layout Protocol

Swift 5.7+ introduced the `Layout` protocol for fully custom layout algorithms without GeometryReader overhead.

Quick Check

What does `GeometryProxy.size` contain?

Recap

Key takeaways: • `GeometryReader { geo in }` reads parent-offered size • `geo.size` — width/height; `geo.safeAreaInsets` — system insets • `frame(in:)` — position in a named or global coordinate space • Use PreferenceKeys to communicate sizes upward • Prefer flexible layouts over GeometryReader when possible Course complete! Next: SwiftUI Data Flow.

Frequently asked questions

Is the “GeometryReader for Adaptive Layouts” lesson free?

Yes — the full text of “GeometryReader for Adaptive Layouts” is free to read here on the web, and the Swift Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Swift Academy course, upgrade to CoddyKit PRO.

What will I learn in “GeometryReader for Adaptive Layouts”?

Reading parent geometry to build proportional and device-adaptive UIs. You practise Swift Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start Swift Academy?

No prior experience is required. Swift Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 4 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “GeometryReader for Adaptive Layouts” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this Swift Academy lesson?

Yes. Every Swift Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. VStack, HStack and ZStack Fundamentals
  2. LazyVGrid and LazyHGrid
  3. Spacer, Padding and Frame Modifiers
  4. GeometryReader for Adaptive Layouts
← Back to Swift Academy