带柔性垫片的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,这使得布局再次完美。(这可以在您的答案中更新。)