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
.
SPONSORED Play is the first native iOS design tool created for designers and engineers. You can install Play for iOS and iPad today and sign up to check out the Beta of our macOS app with SwiftUI code export. We're also hiring engineers!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.