如何在SwiftUI中更改DisclosureGroup中标题的背景颜色

qfe3c7zg  于 12个月前  发布在  Swift
关注(0)|答案(2)|浏览(104)

我想在SwiftUI中使用DisclosureGroup有可扩展列表。所以用下面的代码。

struct ContentView: View {
    var body: some View {
        List {
            DisclosureGroup {
                Text("item 1")
                Text("item 2")
            } label: {
                HStack {
                    Image(systemName: "heart")
                    Text("Header")
                }
            }
            .padding()
            .background(Rectangle().fill(Color.blue))
        }
        .listStyle(.plain)
        .background(Color.red)
    }
}

字符串
我得到这样的结果


的数据
如何摆脱这个白色背景或简单地扩大蓝色标题的列表屏幕的边缘?

hrirmatl

hrirmatl1#

您看到的白色部分实际上是列表行的背景。您可以根据需要将其设置为.clear.blue

DisclosureGroup {
    ...
}
.listRowBackground(Color.blue) // replaces the white parts with blue
// .listRowBackground(Color.clear) // make the rows transparent, allowing you to see the red background of the list instead.

字符串

tf7tbtn2

tf7tbtn22#

不确定一个示意性的方式,但你可以设置每个元素的大小的宽度使用几何阅读器,然后只是切断白色使用一些负填充你的蓝色矩形。

struct ContentView: View {
    var body: some View {
        GeometryReader { view in
            List {
                DisclosureGroup {
                    Text("item 1")
                        .frame(width: view.size.width, alignment: .leading)
                    Text("item 2")
                        .frame(width: view.size.width, alignment: .leading)
                } label: {
                    HStack {
                        Image(systemName: "heart")
                        Text("Header")
                    }
                }
                .padding()
                .frame(width: view.size.width, alignment: .leading)
                .background(
                    Rectangle()
                        .fill(.blue)
                        .padding(-12)
                )
            }
            .listStyle(.plain)
            .background(Color.red)
        }
    }
}

字符串

相关问题