Skip to main content

How to get translucent lists on macOS

About 2 minSwiftSwiftUIArticle(s)bloghackingwithswift.comcrashcourseswiftswiftuixcodeappstore

How to get translucent lists on macOS 관련

SwiftUI by Example

Back to Home

How to get translucent lists on macOS | SwiftUI by Example

How to get translucent lists on macOS

Updated for Xcode 15

Updated for iOS 15

One subtle but important feature of macOS is the way sidebars are automatically made slightly transparent when a window is active, then made opaque when the window moves to the background – it’s a small hint to the user which window is active, but also lets a little of their background show through, giving them a little context of their environment.

SwiftUI allows us to create these translucent sidebars using the listStyle() modifier on List, passing in .sidebar (or SidebarListStyle() for Xcode 12) like this:

NavigationStack {
    List(1..<51) {
         Text("\($0)")
    }
    .listStyle(.sidebar)
}

Important

If you’re using Xcode 12 you need to use SidebarListStyle() rather than .sidebar.

There’s nothing stopping you from using that with any list, but the clue is in the name: it’s specifically designed for lists that are shown on the side of your main window, as you can see in Xcode’s navigators.

Note: on iOS and iPadOS, .sidebar does not provide translucent background, but does affect the cell styling.

An inactive macOS window with an opaque sidebar, an active macOS window with a translucent sidebar, an iPad with a list, and an iPhone with a list. The iPad and iPhone lists have gray backgrounds and no list-item separators.
An inactive macOS window with an opaque sidebar, an active macOS window with a translucent sidebar, an iPad with a list, and an iPhone with a list. The iPad and iPhone lists have gray backgrounds and no list-item separators.
Similar solutions…
How to create multi-column lists using Table | SwiftUI by Example

How to create multi-column lists using Table
How to create grouped and inset grouped lists | SwiftUI by Example

How to create grouped and inset grouped lists
How to create expanding lists | SwiftUI by Example

How to create expanding lists
Working with lists | SwiftUI by Example

Working with lists
How to make carousel lists on watchOS | SwiftUI by Example

How to make carousel lists on watchOS

이찬희 (MarkiiimarK)
Never Stop Learning.