SwiftUI ZStack: выровняйте некоторых потомков снизу, а некоторых сверху

В качестве корневого представления моего приложения у меня есть ZStack, и я хотел бы добавить две плавающие полосы, одну снизу и одну вверху области просмотра.

С одной полоской это просто ( ZStack(alignment: .top)), но есть ли способ добавить несколько потомков и выровнять одного по верхнему, а второго по нижнему краю?

Я пытался удалить alignment из ZStack и добавив .frame(alignment: .top) / .frame(alignment: .bottom) детям, но это ничего не дало.

Да, его можно было бы взломать, обернув ZStack с выравниванием по верхнему краю другим, выровненным по нижнему краю, но это кажется довольно неэлегантным.

3 ответа

Вот возможный подход

      ZStack {

 // content here

}
.overlay(YourTopView(), alignment: .top)
.overlay(YourBottomView(), alignment: .bottom)

Другой возможный вариант - использовать один .overlay с участием VStack имея два взгляда и Spacer между.

Вот еще один подход, который допускает перекрытие представлений, выровненных по верхнему и нижнему краю.

      ZStack() {
    VStack() {
        topView()
        Spacer()
    }
    VStack() {
        Spacer()
        bottomView()
    }
}

Вы можете просто добавить VStack внутри твоего ZStack как это

      ZStack {
    VStack {
        YourTopView()
        Spacer()
        YourBottomView()
    }
}
Другие вопросы по тегам