Chapters

Hide chapters

SwiftUI Cookbook

Live Edition · iOS 16.4 · Swift 5.8.1 · Xcode 14.3.1

Customize the Corner Radius of a Modal in SwiftUI
Written by Team Kodeco

In SwiftUI, you have the ability to modify the corner radius of a modal presentation. This provides a way to customize the aesthetics of your modal views to better fit the overall style of your application. To request a specific corner radius for a presentation, use the presentationCornerRadius modifier.

Let’s consider a fun example where we present a modal sheet of favorite movies with a customized corner radius.

struct ContentView: View {
  @State private var showModal = false

  let favoriteMovies = [
    "The Shawshank Redemption",
    "The Godfather",
    "The Dark Knight",
    "Pulp Fiction",
    "Fight Club",
    "Forrest Gump",
    "Inception",
    "The Matrix",
    "Interstellar",
    "The Lion King"
  ]

  var body: some View {
    Button("Show Favorite Movies") {
      showModal = true
    }
    .sheet(isPresented: $showModal) {
      VStack {
        List(favoriteMovies, id: \.self) { movie in
          Text(movie)
        }
      }
      .presentationDetents([.medium, .large])
      .presentationCornerRadius(21)
    }
  }
}

Tap on the Show Favorite Movies button and your preview should look like this:

A modal view with a list in SwiftUI.
A modal view with a list in SwiftUI.

In this example, we have a list of favorite movies displayed in a modal sheet. The .presentationCornerRadius(21) modifier applies a corner radius of 21 points to the modal sheet. You can adjust this value to increase or decrease the rounded corners of your modal. If you set cornerRadius to nil, the system default corner radius will be used.

This simple modifier can help create a smoother and more visually appealing transition between your base view and your modal view, enhancing the overall user experience.

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.