0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

えーえすAdvent Calendar 2024

Day 5

macOSでListの背景色を透明にする

Last updated at Posted at 2024-12-04

はじめに

SwiftUIでmacOSアプリを開発する際にはiOSアプリ作成とは勝手が違うことが多いです。
今回は、Listの背景色がmacOSだと白くなってしまう問題に対処していきます。

背景色がある

例えばこのようなアプリを作っているとします。

ContentView
struct ContentView: View {
    var body: some View {
        VStack {
            List(0..<3) { num in
                Text(String(num))
            }
            .frame(width: 800, height: 600)
        }
        .background(Color.red)
    }
}

ここで、VStackの背景色は赤のはずなのに、背景色は白いままです。

image.png

これは、macOSだとListにデフォルトで背景色がついていることが原因です。

背景色を消す方法

以下のmodifierをつければ解決します!

ContentView
struct ContentView: View {
    var body: some View {
        VStack {
            List(0..<3) { num in
                Text(String(num))
            }
            .scrollContentBackground(.hidden)
            .frame(width: 800, height: 600)
        }
        .background(Color.red)
    }
}

こうすると背景色が透明になります!

image.png

また、NavigationStackに対しても成り立ちます。

ContentView
struct ContentView: View {
    var body: some View {
        VStack {
            NavigationStack {
                List(0..<3) { num in
                    NavigationLink {
                        EmptyView()
                    } label: {
                        Text(String(num))
                    }
                }
            }
            .scrollContentBackground(.hidden)
            .frame(width: 800, height: 600)
        }
        .background(Color.red)
    }
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?