SwiftUI View Life Cycle

Garrett Barker
4 min readMay 10, 2023

--

In this article, we will discuss the SwiftUI view life cycle and how it works.

https://developer.apple.com/xcode/swiftui/

Introduction to SwiftUI View Life Cycle

A SwiftUI view has a life cycle that determines when it is created, updated, and destroyed. The life cycle is important because it helps developers understand how the view behaves and how to optimize its performance.

There are two types of SwiftUI views:

  • Structures — which are value types and created every time their state changes
  • Classes — which are reference types and can be updated without being recreated

Regardless of the type, all SwiftUI views follow the same life cycle.

View Life Cycle Phases

The SwiftUI view life cycle consists of four phases:

  1. Initialization — when a view is created and initialized with its properties.
  2. Updating — when a view’s state changes, and it needs to update its appearance.
  3. Layout — when a view calculates its size and position based on its content and parent view.
  4. Drawing — when a view renders its content on the screen.

Initialization Phase

During the initialization phase, SwiftUI creates and initializes the view with its properties. This is where you can set the view’s initial state, configure its appearance, and perform any setup necessary for the view to function properly.

In SwiftUI, the init() method is used to initialize a view. You can pass any necessary parameters to the initializer to configure the view's appearance or behavior. For example:

struct MyView: View {
var title: String

init(title: String) {
self.title = title
}

var body: some View {
Text(title)
}
}

In this example, we pass a title parameter to the MyView initializer to set the view's title. The body property is used to define the view's content.

Updating Phase

During the updating phase, SwiftUI updates the view’s appearance based on its state. When the state of a view changes, SwiftUI re-evaluates the view’s body property and updates the view accordingly.

In SwiftUI, you use the @State property wrapper to manage the state of a view. When the state changes, SwiftUI updates the view's appearance. For example:

struct MyView: View {
@State var count = 0

var body: some View {
VStack {
Text("Count: \(count)")
Button("Increment") {
count += 1
}
}
}
}

In this example, we use the @State property wrapper to manage the state of the count variable. When the user taps the "Increment" button, the count variable is updated, and SwiftUI updates the view's appearance.

Layout Phase

During the layout phase, SwiftUI calculates the size and position of a view based on its content and parent view. This is where SwiftUI determines how much space a view needs to display its content and where it should be placed in the view hierarchy.

In SwiftUI, you can use layout modifiers to adjust the size and position of a view. For example:

struct MyView: View {
var body: some View {
Text("Hello, World!")
.font(.largeTitle)
.padding()
.background(Color.blue)
.cornerRadius(10)
}
}

Drawing Phase

During the drawing phase, SwiftUI renders the content of a view on the screen. This is where the view’s appearance is fully realized and displayed to the user.

In SwiftUI, you use the body property to define the content of a view. The body property returns a View object, which describes how the view should be rendered on the screen. For example:

struct MyView: View {
var body: some View {
VStack {
Text("Hello, World!")
.font(.largeTitle)
.foregroundColor(.white)
}
.frame(width: 200, height: 200)
.background(Color.blue)
.cornerRadius(10)
}
}

In this example, we use a VStack to vertically stack a Text view that says "Hello, World!". We then apply a series of modifiers to adjust the appearance of the view. Finally, we use the frame modifier to set the size of the view and the background and cornerRadius modifiers to add a blue background color and rounded corners to the view.

Conclusion

The SwiftUI view life cycle consists of four phases: initialization, updating, layout, and drawing. Understanding the view life cycle is essential for optimizing the performance of your SwiftUI views.

During the initialization phase, you can set the view’s initial state and perform any necessary setup. During the updating phase, you can manage the view’s state and update its appearance accordingly. During the layout phase, you can adjust the size and position of the view based on its content and parent view. Finally, during the drawing phase, SwiftUI renders the view’s content on the screen.

By understanding the SwiftUI view life cycle and how it works, you can create more efficient and performant SwiftUI views that provide a better user experience.

Thank you for reading! Please 👏 clap, leave a comment and follow I really appreciate it! It helps me to know what content people are interested in.

--

--

Garrett Barker

Software Engineer, Technology, SwiftUI, iOS, Programing, Mobile Developer