SwiftUI主列表可滚动的标题视图是否没有部分



有没有一种方法可以将视图放在没有节的列表头中?表视图通常有一个名为tableHeaderView的属性,它是整个表的标头,与节标头无关。

我正在尝试一个列表,并能够像UITableView中的tableHeaderView一样滚动它。

struct MyView: View {
    
    let myList: [String] = ["1", "2", "3"]
    
    var body: some View {
        VStack {
            MyHeader()
            List(myList, id: .self) { element in
                Text(element)
            }
        }
    }
}

感谢Asperi。这是我对表头的最终解决方案。

struct MyHeader: View {
    var body: some View {
        Text("Header")
    }
}
struct DemoTableHeader: View {
    let myList: [String] = ["1", "2", "3"]
    var body: some View {
        List {
            MyHeader()
            ForEach(myList, id: .self) { element in
                Text(element)
            }
        }
    }
}

这里是一个简单的演示,演示了可能的方法,其他一切(如样式、大小、对齐、背景(都是可扩展的&可配置。

使用Xcode 11.4/iOS 13.4 进行测试

struct MyHeader: View {
    var body: some View {
        Text("Header")
            .padding()
            .frame(maxWidth: .infinity)
    }
}
struct DemoTableHeader: View {
    let myList: [String] = ["1", "2", "3"]
    let headerHeight = CGFloat(24)
    var body: some View {
        ZStack(alignment: .topLeading) {
            MyHeader().zIndex(1)               // << header
                .frame(height: headerHeight)
            List {
                Color.clear                    // << under-header placeholder
                    .frame(height: headerHeight)
                ForEach(myList, id: .self) { element in
                    Text(element)
                }
            }
        }
    }
}

相关内容

最新更新