Mac OSでListViewを使用しています。そのListViewの背景色を変更しようとしています。しかし、それは予想されるほど簡単ではありません。
ListViewで.background(Color(.red))
属性を使用してみました。それは何も変わりませんでした。
テーブルの行に影響を与える.listRowBackground(Color(.red))
のみを見つけることができました。ただし、他の背景には影響はありませんでした。
デモ用に少しデモを用意しました。
私の見解では:
VStack
{
List()
{
Text("Test")
.listRowBackground(Color.green)
Text("Test")
.listRowBackground(Color.green)
Text("Test")
.listRowBackground(Color.green)
}.background(Color(.red))
}.background(Color(.red))
それは私が得る結果です:
主な背景は変わりません。 UITableView.appearance
を変更するソリューションについて読みましたが、SwiftUI for Mac OSではそれができません。
前もって感謝します
残念ながら、ListStyle
プロトコルは文書化されておらず、.listStyle
修飾子の使用法は非常に限られているため、CarouselListStyle, DefaultListStyle, GroupedListStyle ,PlainListStyle, SidebarListStyle
から選択できます
ScrollViewとForEachを組み合わせてListを模倣してみてください。これにより多くの柔軟性が得られ、欠落している部分は簡単に記述できます。開発者がListStyleを使用できるようになると、コードを変更するのは簡単になります...
struct ContentView: View {
var body: some View {
HStack(spacing: 0) {
ScrollView {
ForEach(0 ..< 4) { idx in
VStack(alignment: .leading) {
Divider().background(Color.blue)
Text("Test \(idx)")
.padding(.horizontal, 10)
.background(Color.pink)
//Divider()
}.padding(.bottom, -6)
}
}
.frame(maxWidth: 100)
.background(Color.gray)
Color.green
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}