具有灵活 Spacer 的 SwiftUI VStack
SwiftUI VStack with flexible Spacer
我有一个简单的 VStack
,上面有一个视图,底部有一个多行文本。文本可以更新其内容,因此它会根据行数调整大小。当发生这种情况时,顶部的视图也会调整其位置 - 向上或向下移动。
我希望顶视图保持固定的垂直位置,独立于 VStack
中下方的视图。在我看来,这就是 Spacer
的用途,因为它们很灵活。然而,这并不能解决问题。
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
中:
struct ContentView: View {
var body: some View {
VStack {
VStack {
Text("top view")
Spacer()
}
VStack {
Spacer()
Text("bottom view")
}
}
}
}
我有一个简单的 VStack
,上面有一个视图,底部有一个多行文本。文本可以更新其内容,因此它会根据行数调整大小。当发生这种情况时,顶部的视图也会调整其位置 - 向上或向下移动。
我希望顶视图保持固定的垂直位置,独立于 VStack
中下方的视图。在我看来,这就是 Spacer
的用途,因为它们很灵活。然而,这并不能解决问题。
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
中:
struct ContentView: View {
var body: some View {
VStack {
VStack {
Text("top view")
Spacer()
}
VStack {
Spacer()
Text("bottom view")
}
}
}
}