首页 > 解决方案 > SwiftUI:未应用对齐

问题描述

我有一个你不明白的小例子:为什么我的 ZStack 的对齐方式没有应用于它的所有孩子?TopView 保持在顶部,但我希望每个孩子都在右下角:

struct ContentView: View {
    var body: some View {
        ZStack(alignment: .bottomTrailing) {
            VStack {
                TopView()
                Spacer()
            }
            Text("A new layer")
        }.padding()
    }
}

struct TopView: View {
    var body: some View {
        HStack(alignment: .top) {
            VStack {
                Text("SwiftUI")
                Text("Layout")
            }
            Spacer()
            Image(systemName: "star")
        }
    }
}

在此处输入图像描述

标签: swiftui

解决方案


默认情况下,所有视图都在他们需要的区域的中间。即使您正在使用VStack它,它也会位于屏幕中间并且高度为 2 Text(如您的示例中所示)。 ZStack具有相同的行为 - 它将尽可能小并位于安全区域的中心。

Spacer刚刚TopView尝试占用所有可用空间。就像Spacer星星和文字之间一样。所以VStack在你的ZStack技术上是 on .bottomTrailing,但占用了所有的可用空间。只需尝试删除或更改Spacer's 的位置:

在此处输入图像描述


推荐阅读