Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swiftui 如何从导航栏(尾部)中删除默认填充_Swiftui - Fatal编程技术网

Swiftui 如何从导航栏(尾部)中删除默认填充

Swiftui 如何从导航栏(尾部)中删除默认填充,swiftui,Swiftui,我在SwiftUI中向导航栏添加了一些按钮,因为我需要为它们添加一些填充,所以它们显示得比我预期的更偏左(如下所示) 如果我从每个按钮上移除单独的填充,我可以修复这个问题,但是在这种情况下,点击区域非常有限,从用户体验的角度来看,这是不寻常的 有没有办法删除默认的额外填充 .navigationBarItems( trailing: HStack(alignment: .center, spacing: 0) { Butt

我在SwiftUI中向导航栏添加了一些按钮,因为我需要为它们添加一些填充,所以它们显示得比我预期的更偏左(如下所示)

如果我从每个按钮上移除单独的填充,我可以修复这个问题,但是在这种情况下,点击区域非常有限,从用户体验的角度来看,这是不寻常的

有没有办法删除默认的额外填充

.navigationBarItems(
        trailing:
            HStack(alignment: .center, spacing: 0) {
                Button(action: {

                }) {
                    Image(systemName: "trash")
                    .imageScale(.large)
                    .accessibility(label: Text("Delete"))
                    .padding()
                }

                Button(action: {

                }) {
                    Image(systemName: "square.and.arrow.up")
                    .imageScale(.large)
                    .accessibility(label: Text("Share"))
                    .padding()
                }

                CustomEditButton() {
                    if self.mode?.wrappedValue == .active {
                        return self.triggerSave()
                    } else {
                        return true
                    }
                }
            }
    )
试试这个(复制-粘贴-运行)

对于“删除”和“共享”按钮,我会使用
.padding(.trailing)
,而对于
自定义编辑按钮,则根本不使用任何填充

这是结果


我找到了以下适合我需要的解决方法。这并不完美,但至少可攻丝的区域足够了,看起来还不错


试过了,问题是“可点击区域”对于CustomEdit按钮来说会更少。我发现在按钮附近轻敲却看不到任何东西很烦人effect@AndreiMatei,您可以使用自定义填充,例如对所有边使用
.padding(4)
,或使用
.padding([.leading,.training],4)
等来指定CustomEdit或任何其他。我已检查了答案,但我发现它只是一种解决方法。这两个元素之间的空间不够。它们距离UX pov太近。两个元素之间的空间不够。它们离UX pov太近了。垂直填充有帮助,但不是enough@AndreiMatei应用。在每个项目周围加上边框,不加填充,也不加填充,以便能够看到那里发生了什么。默认定位中有一个小错误,很可能会在SwiftUI.yeap的下一个版本中解决,期待下一个版本:)。我总是感到烦恼。
import SwiftUI

struct DestinationView: View {
    let txt: String
    var body: some View {
        Text(txt)
            .navigationBarTitle(txt)
        .navigationBarItems(trailing:
            HStack {
                Button(action: {
                    print("tap trasgh")
                }) {
                    Image(systemName: "trash")
                }
                Button(action: {
                    print("tap in")
                }) {
                    Image(systemName: "square.and.arrow.down")
                }
                Button(action: {
                    print("tap out")
                }) {
                    Image(systemName: "square.and.arrow.up")
                }
            }.imageScale(.large).padding(.vertical, 8).padding(.horizontal, 3)//.border(Color.blue)
        )
    }
}

struct ContentView: View {
    var body: some View {
        NavigationView {
            List {
                NavigationLink(destination: DestinationView(txt: "Destination 1")) {
                    Text("Destination 1")
                }
                NavigationLink(destination: DestinationView(txt: "Destination 2")) {
                    Text("Destination 2")
                }
            }
        }.navigationBarTitle("title")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
HStack(alignment: .center, spacing: 0) {
     Button(action: {
          ////
     }) {
          Image(systemName: "trash")
              .imageScale(.large)
              .accessibility(label: Text("Delete"))
              .padding(.vertical)
              .padding(.horizontal, 8)
     }

     Button(action: {
          ////
     }) {
          Image(systemName: "trash")
              .imageScale(.large)
              .accessibility(label: Text("Delete"))
              .padding(.vertical)
              .padding(.horizontal, 8)
     }

     Button(action: {
          ////
     }) {
          Image(systemName: "trash")
              .imageScale(.large)
              .accessibility(label: Text("Delete"))
              .padding(.vertical)
              .padding(.leading, 8)
              .padding(.trailing, 4)
     }
}