带柔性垫片的SwiftUI VStack

带柔性垫片的SwiftUI VStack,swiftui,vstack,Swiftui,Vstack,我有一个简单的VStack,上面有一个视图,下面有一个多行文本。文本可以更新其内容,因此它会根据其行数调整大小。当这种情况发生时,顶部的视图也会调整其位置-向上或向下移动 我希望俯视图保持固定的垂直位置,独立于VStack中的以下视图。在我看来,这就是间隔垫圈的用途,因为它们是灵活的。然而,这并不是关键 struct ContentView: View { var body: some View { VStack { HStack("So

我有一个简单的
VStack
,上面有一个视图,下面有一个多行文本。文本可以更新其内容,因此它会根据其行数调整大小。当这种情况发生时,顶部的视图也会调整其位置-向上或向下移动

我希望俯视图保持固定的垂直位置,独立于
VStack
中的以下视图。在我看来,这就是间隔垫圈的用途,因为它们是灵活的。然而,这并不是关键

struct ContentView: View {
    var body: some View {
        VStack {
            HStack("Some Icons")
            Spacer()
            Text("Multiline Text")
        }
    }
}

您可以将其包装在
ZStack
中:

struct ContentView: View {
    var body: some View {
        ZStack {
            VStack {
                Text("top view")
                Spacer()
            }
            VStack {
                Spacer()
                Text("bottom view")
            }
        }
    }
}
这样,第一个
VStack
中的所有内容都不会相对于第二个
VStack
移动


或者,您可以继续使用
VStack
,但将其子视图包装在单独的
VStack
s中:

struct ContentView: View {
    var body: some View {
        VStack {
            VStack {
                Text("top view")
                Spacer()
            }
            VStack {
                Spacer()
                Text("bottom view")
            }
        }
    }
}

谢谢,但是我试过了,但是它们正好在一起,我必须通过应用偏移来手动调整它们的位置。我想保留VStack的自动垂直布局。@hoshy然后请共享您的代码并更好地描述问题-包括其他视图,并且当您只有两个视图(如上面的示例所示)时没有问题。是的,您的解决方案可行,但如前所述,它也会将VStack和文本呈现在彼此的顶部。所以我必须对它们进行偏移,使它们看起来是垂直结构的。我的问题是,是否有一种方式,间隔是视图缩小和扩大,保持HStack固定。@hoshy见更新的答案。您可以放置任何其他视图(如
HStack
),而不是
Text(“俯视图”)
。有趣的是,有了两个vstack和内部垫片,您甚至不需要ZStack,这使得布局再次完美。(这可以在您的答案中更新。)