Вот фрагмент кода, демонстрирующий то, что я сейчас вижу:
Код: Выделить всё
struct ContentView: View {
@Bindable var viewModel: MockViewModel // Just contains an array of data
var body: some View {
GeometryReader { reader in
ScrollView {
VStack { // Update this to LazyVStack
if viewModel.dataSet.isEmpty {
EmptyListView()
} else {
ForEach(viewModel.dataSet, id: \.id) { viewData in
VStack(spacing: 0) {
DataCell(viewData: viewData)
.background()
.padding(.bottom, 16)
if (viewData.id != viewModel.dataSet.last?.id) {
Divider()
}
}
}
}
/* Footer that would expand to take up any unused space */
VStack(spacing: 0) {
Spacer()
FooterView()
}.frame(maxHeight: .infinity, alignment: .bottom)
}.background()
.frame(minHeight: reader.size.height)
}
}.ignoresSafeArea(edges:.bottom)
}
}
Как бы выглядел список, когда он достигнет нижней части. >
Как бы выглядел список, если бы он содержал только 1 элемент. Это использование VStack.
Однако это то, что я вижу при использовании LazyVStack. Похоже, что компонент Spacer не расширяется, чтобы заполнить доступное пространство.
С включенным кодом (с использованием VStack) я могу добиться результаты, которые я ищу. Однако при использовании LazyVStack кажется, что Spacer всегда имеет высоту 0. Я получаю тот же результат, как если бы тот же контент был помещен внутри List. Есть ли способ добиться того, что мы ищем в LazyVStack? Мы предпочитаем использовать LazyVStack, чтобы избежать предварительной визуализации всего представления при его загрузке.
Будем очень признательны за любые подсказки! Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/792 ... able-space