使用SwiftUI中的简单List,如何更改/删除节标题的标准背景颜色

struct ContentView : View {
    var body: some View {
        List {
            ForEach(0...3) { section in
                Section(header: Text("Section")) {
                    ForEach(0...3) { row in
                        Text("Row")
                    }
                }
            }
        }
    }
}

swiftui - 在SwiftUI列表中删除/更改节标题背景颜色-LMLPHP

最佳答案

在beta 4中,不推荐使用relativeWidth。更新了代码以反射(reflect)这一点。
不幸的是,没有快速的参数可以设置背景颜色。但是,您仍然可以这样做:
swiftui - 在SwiftUI列表中删除/更改节标题背景颜色-LMLPHP

import SwiftUI

struct ContentView : View {
    var body: some View {
        List {
            ForEach(0...3) { section in
                Section(header:
                            CustomHeader(
                                name: "Section Name",
                                color: Color.yellow
                            )
                        ) {
                    ForEach(0...3) { row in
                        Text("Row")
                    }
                }
            }
        }
    }
}

struct CustomHeader: View {
    let name: String
    let color: Color

    var body: some View {
        VStack {
            Spacer()
            HStack {
                Text(name)
                Spacer()
            }
            Spacer()
        }
        .padding(0).background(FillAll(color: color))
    }
}

struct FillAll: View {
    let color: Color

    var body: some View {
        GeometryReader { proxy in
            self.color.frame(width: proxy.size.width * 1.3).fixedSize()
        }
    }
}

关于swiftui - 在SwiftUI列表中删除/更改节标题背景颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56867334/

10-17 01:10