首页 > 解决方案 > 从 SwiftUI 中的“列表”中删除顶部填充

问题描述

我在 Stack Overflow 上看到过类似的问题,但没有一个能够回答我的问题。

我创建了一个List,但我想删除List. 使用时如何删除它GroupedListStyle

截屏

这是通过以下方式显示的一个List内的一个VStack内:NavigationViewfullscreenCover

var body: some View {
  NavigationView {
    VStack {
      taskEventPicker
      myList
    }
    .navigationBarTitle("Add Task", displayMode: .inline)
  }
}

哪里taskEventPicker是分段的Picker(以绿色框起来):

var taskEventPicker: some View {
  Picker("Mode", selection: $selection) { /* ... */ }
  .pickerStyle(SegmentedPickerStyle())
  .padding()
}

并且myList是有问题的表格(黄色框):

var myList: some View {
  List { /* ... */ }
  .listStyle(GroupedListStyle())
}

我试过的

注意:我正在寻找可以适用于GroupedListStyle. 我知道这个问题不会发生在PlainListStyle. 默认情况下也会出现此填充问题listStyle

谢谢您的帮助!

Xcode 版本:12.5

标签: iosswiftswiftuiswiftui-list

解决方案


首先,我会说这GroupedListStyle是按预期工作的。

在 iOS 上,分组列表样式比普通样式显示更大的页眉和页脚,这在视觉上拉开了不同部分的成员的距离。

你说你已经尝试过了,但它对我有用(Xcode 12.5.1):

    List { ... }    
    .onAppear(perform: {
        UITableView.appearance().contentInset.top = -35
    })

ZStack您还可以通过在堆栈底部和顶部使用带有列表的 a 来隐藏列表标题Picker。Picker 确实具有透明度,因此您还必须添加一个不透明视图作为Picker.

var body: some View {
    NavigationView {
        ZStack(alignment: .top) {
            List { ... }
            .listStyle(GroupedListStyle())
            .padding(.top, 30)
            
            Color.white
                .frame(height: 65)
            
            Picker { ... }
            .pickerStyle(SegmentedPickerStyle())
            .padding()
        }
        .navigationBarTitle("Add Task", displayMode: .inline)
    }
}

在此处输入图像描述

据我所知,这看起来和PlainListStyle会做的一样,但我假设你有一个特别的理由想要使用GroupedListStyle.


推荐阅读