Skip to content

ProgressView in SwiftUI

SwiftUI’s ProgressView offers a streamlined way to represent task completion, making it an essential component for any developer looking to add progress indicators to their apps. This tutorial covers how to set up both determinate and indeterminate progress views, along with a special implementation for date-driven progress. Each example includes a full code snippet and a detailed explanation to ensure you understand the implementation and can adapt it to your own needs.

1. Linear ProgressView

Description

A linear ProgressView visually represents the percentage of a task that has been completed. This is useful in scenarios where the progress of a task can be quantified, such as downloading a file or completing a series of steps in a tutorial.

Code Example

import SwiftUI

struct LinearProgressView: View {
    @State private var progress = 0.5  // Start at 50% completion

    var body: some View {
        VStack {
            ProgressView(value: progress, total: 1.0) {
                Text("Downloading...")
            }
            Button("More") {
                if progress < 1.0 {
                    progress += 0.05  // Increment by 5%
                }
            }
        }
    }
}

This view initializes with the progress at 50%. A button labeled “More” allows the user to increment the progress. Each tap increases the progress by 5%, visually updated in the ProgressView.

2. Circular ProgressView

An indeterminate circular ProgressView is used when the duration or completion percentage of a task is unknown. This style is typically seen with a spinning indicator or a looping progress bar.

import SwiftUI

struct CircularProgressView: View {
    var body: some View {
        ProgressView() 
            .progressViewStyle(.circular)
    }
}

Here, the ProgressView doesn’t take a progress value, indicating that it’s indeterminate. This example uses the built-in circular style, commonly used to signify that an operation is in progress but its completion time is not known.

Conclusion

SwiftUI’s ProgressView is a versatile component that can handle various types of progress tracking, from simple linear and circular displays to more complex time-based progress. By understanding how to implement and style these different types, you can greatly enhance the user experience of your apps. Experiment with custom styles and adaptations to fit the specific needs of your applications.

 

 

 

Back To Top