删除SwiftUI表单填充

时间:2020-06-21 14:47:18

标签: ios swift uikit swiftui

当您使用SwiftUI Form时,它会在前端创建填充,这对于Form输入是很好的选择,但我想在表单中添加其他内容,例如图像占据了整个屏幕的整个宽度,但是由于该图像位于Form中,因此会应用填充,并且图像会被略微推离屏幕。如何删除所有Form的填充?

struct MyForm: View {
  var body: some View {
    Form {
      Image(uiImage: someImage)
        .resizable()
        .aspectRatio(contentMode: .fill)
        .frame(width: UIScreen.main.bounds.width)

      TextField("Name", text: $name)

      // Other fields
    }
  }
}

我知道Form的基础视图是UITableView,在这里我可以做类似UITableView.appearance().backgroundColor = .clear的事情来更改Form的外观,但是我不知道如何删除前导填充。

我还知道我可以将Image视图移到Form之外并将所有内容放入堆栈,但这会带来其他一些我想避免的滚动问题。

1 个答案:

答案 0 :(得分:3)

这是一个解决方案。经过Xcode 11.4 / iOS 13.4的测试

  Image(uiImage: someImage)
    .resizable()
    .aspectRatio(contentMode: .fill)
    .listRowInsets(EdgeInsets())        // << this one !!

注意:不需要对UIScreen.main.bounds.width进行硬编码