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()
}
}