Chapters

Hide chapters

SwiftUI Cookbook

Live Edition · iOS 16.4 · Swift 5.8.1 · Xcode 14.3.1

Understanding GeometryReader in SwiftUI
Written by Team Kodeco

GeometryReader is a powerful tool in SwiftUI that allows us to access and manipulate the size and position of a view. It is especially useful when we need to create custom layouts or animations.

To use GeometryReader, you simply wrap your view in it. Inside the closure, you can access a geometry proxy that provides information about the size and position of the view.

Here’s an example:

struct ContentView: View {
  var body: some View {
    GeometryReader { geometry in
      VStack {
        ForEach(0..<10) { i in
          Rectangle()
            .fill(.blue)
            .frame(
              width: geometry.size.width * CGFloat(i+1)/10,
              height: geometry.size.height/10
            )
        }
      }
    }
  }
}

Your preview should look like this:

SwiftUI's GeometryReader lets you scale enclosed views in relation to available space.
SwiftUI's GeometryReader lets you scale enclosed views in relation to available space.

In this example, you use GeometryReader to create a VStack of 10 rectangles. The width of each rectangle is proportional to its position in the stack — the first rectangle takes up 10% of the width, the second 20% and so on up to 100%. This kind of dynamic, responsive layout is made possible thanks to the insights provided by GeometryReader.

All this makes for a fun exploration of GeometryReader, illustrating how it provides dynamic information about the view’s environment, and how you can use this to influence your layout and animations.

Have a technical question? Want to report a bug? You can ask questions and report bugs to the book authors in our official book forum here.
© 2024 Kodeco Inc.