SwiftUI: выравнивание не применяется - PullRequest
0 голосов
/ 02 марта 2020

У меня есть небольшой пример, который U не понимает: почему выравнивание моего 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")
        }
    }
}

enter image description here

1 Ответ

0 голосов

По умолчанию все виды находятся в середине нужной области. Даже если вы используете VStack, оно будет посередине экрана и будет иметь высоту два Text (как в вашем примере). ZStack имеет такое же поведение - оно будет как можно меньше и находится прямо в центре безопасной зоны.

Spacer чуть ниже TopView пытается занять все свободное пространство. Так же, как Spacer между звездой и текстом. Так что VStack в вашем ZStack технически находится на .bottomTrailing, но занимает все свободное место. Просто попробуйте удалить или изменить положение Spacer s:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...