Updated for Xcode 14.2
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% To celebrate WWDC23, all our books and bundles are half price, so you can take your Swift knowledge further without spending big! 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 advanced design patterns, testing skills, and more.
Link copied to your pasteboard.