Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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工作表中未对齐_Swift_Alignment_Swiftui_Swift Playground - Fatal编程技术网

对象在SwiftUI工作表中未对齐

对象在SwiftUI工作表中未对齐,swift,alignment,swiftui,swift-playground,Swift,Alignment,Swiftui,Swift Playground,我在Swift游乐场使用一张工作表,我想将加号与屏幕左上角对齐,但当我尝试运行下面的代码时,加号没有对齐,它只保留在工作表的中心。有办法解决这个问题吗 免责声明:我正在使用SwiftUI和Swift游乐场 struct SecondView : View { @Environment(\.presentationMode) var presentationMode @State var string: String var body: some View {

我在Swift游乐场使用一张工作表,我想将加号与屏幕左上角对齐,但当我尝试运行下面的代码时,加号没有对齐,它只保留在工作表的中心。有办法解决这个问题吗

免责声明:我正在使用SwiftUI和Swift游乐场

struct SecondView : View {
    @Environment(\.presentationMode) var presentationMode
    @State var string: String
    var body: some View {
        VStack {
            Button(action: {
                self.presentationMode.wrappedValue.dismiss()
            }, label: {
                Image(systemName: "plus")
                    .resizable()
                    .frame(width: 30, height: 30, alignment: .leading)
            })
        }
    }
}

在SwiftUI中,生成的父视图的边界通常由其内部的视图决定。在这种情况下,您的整体视图由VStack中的按钮绑定,因此以任何方式对齐它都不会使其移动太多,或者根本不会在狭窄的范围内移动。如果在最外面的视图周围绘制边框/背景,您就会明白我的意思

一种解决方案是使用间隔器灵活扩展内部视图,以占用额外的可用空间

var body: some View {
  VStack {
     HStack { 
       Button(...) // probably want to add some padding
       Spacer()
     }
     Spacer()
  }
} 
或者,如果是“取消”按钮,请将其添加为覆盖

全文如下:

var body: some View {
  VStack {
     VStack(spacing: 10) {
       HStack { 
         Button(...) // probably want to add some padding 
         Spacer()
       }
       Text(...)
     }
     Spacer()
  }
} 

这会将按钮移动到右上角,这很好,但是当我在第二个间隔符下添加文本时,文本会移动到屏幕的最底部。我该如何解决这个问题?我在文本底部添加了一些填充以将其向上移动,但有没有更有效的方法?如果您希望文本靠近按钮下方,请将其放在VStack间隔符之前,该间隔符将填充所有剩余空间。您还可以将HStack和文本嵌套在各自单独的VStack中,您可以在其中设置间距,请参见对答案的编辑。总的来说,还有其他方法可以做到这一点,1。覆盖关闭按钮,2。获取屏幕的边界并使用偏移量;或3。查看校准指南。但这可能是最直截了当的。