| < How to customize a view’s width in NavigationSplitView | How to control which NavigationSplitView column is shown in compact layouts > |
Updated for Xcode 16.4
SwiftUI’s NavigationSplitView has three options to control how sidebars are displayed, each of which can be adjusted using the navigationSplitViewStyle() modifier.
The first is .prominentDetail, which tells SwiftUI you want the detail view to retain its full size at all times – the sidebar and content view will slide over the detail view, rather than pushing it to one side or squeezing it smaller:
struct ContentView: View { var body: some View { NavigationSplitView { Text("Sidebar") } content: { Text("Content") } detail: { Text("Detail") } .navigationSplitViewStyle(.prominentDetail) } }
Download this as an Xcode project
The second option is .balanced, which will reduce the size of your detail view as the sidebar or content bar are shown – just switch .prominentDetail to .balanced, like this:
struct ContentView: View { var body: some View { NavigationSplitView { Text("Sidebar") } content: { Text("Content") } detail: { Text("Detail") } .navigationSplitViewStyle(.balanced) } }
Download this as an Xcode project
The default is .automatic, which will vary according to the platform – at the time of writing, on iPhone it becomes prominentDetail, and on iPad it becomes .balanced.
SAVE 50% All our books and bundles are half price for Black Friday, so you can take your Swift knowledge further for less! Get my all-new book Everything but the Code to make more money with apps, get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn Swift Testing, design patterns, and more.