如何在SwiftUI中删除列表的左右填充?

时间:2019-06-15 20:51:13

标签: swift swiftui

如何在SwiftUI中删除列表的左右填充? 我创建的每个列表在单元格的开头和结尾都有边界。

我应该添加什么修饰符以删除此内容?

8 个答案:

答案 0 :(得分:30)

看来我们可以在{strong> iOS 14

中将PlainListStyle用于List
List {
    Text("Row")
}
.listStyle(PlainListStyle())

答案 1 :(得分:6)

对于.listRowInsets初始化的List中的行,content似乎无效。

所以这不起作用:

List(summaries) { summary in
    SummaryRow(summary: summary)
        .listRowInsets(EdgeInsets())
}

但是这样做:

List {
    ForEach(summaries) { summary in
        SummaryRow(summary: summary)
            .listRowInsets(EdgeInsets())
    }
}

答案 2 :(得分:5)

去除填充

iOS 14.2、Xcode 12.2

ScrollView {
    LazyVStack {
        ForEach(viewModel.portfolios) { portfolio in
            PortfolioRow(item: portfolio)
        }
    }
}

这使您可以完全控制列表(您也可以使用此代码删除分隔符)。 List 的当前实现不提供完全控制并包含一些问题。

答案 3 :(得分:2)

使用此修饰符:

.listRowInsets(EdgeInsets(....))

但是,如documentation所述,您必须在List视图上使用修饰符,而不是List本身。

  

设置插入列表中的插图以应用于视图。 (强调我的)

用法示例:

List {
    Text("test")
        .listRowInsets(EdgeInsets(top: -20, leading: -20, bottom: -20, trailing: -20))
}

答案 4 :(得分:0)

修饰符为

.listRowInset(EdgeInsets(......))

答案 5 :(得分:0)

您应该致电

.listRowInsets()

对于行,像这样:

List(items) {
            YoursRowView()
                .listRowInsets(EdgeInsets(top: 0, leading: 10, bottom: 0, trailing: 10))
        }

答案 6 :(得分:0)

上述解决方案对我没有解决,因为我的列表有部分。

这为我解决了:

List {
  ForEach(years, id:\.self) { year in
    Section(header: SectionHeader(year)) {
      VStack(alignment:.leading) {
        ForEach(cars[year]!, id:\.self) { car in
          ListItem(car)
            .frame(width: UIScreen.main.bounds.size.width,
                       alignment: .center)
            .listRowInsets(.init())
          }
        }
      }
      .frame(width: UIScreen.main.bounds.size.width,
             alignment: .center)
      .listRowInsets(.init())
      .listStyle(GroupedListStyle())
    }
   }

在简历中,您必须重复该部分的命令。

答案 7 :(得分:-1)

.listStyle(GroupedListStyle())