SwiftUI: как удалить отступ между представлениями в VStack?
Используя SwiftUI, я создал VStack, который содержит некоторые фиксированные элементы и элемент списка. Причина в том, что пользователь должен прокручивать только область под фиксированными элементами. Теперь я вижу пробел между вторым фиксированным элементом и списком. Я не знаю, откуда это пространство, и хочу от него избавиться, но понятия не имею, как. Область отмечена красным.
struct DashboardView : View, CoreDataInjected {
var body: some View {
GeometryReader { geometry in
VStack {
ScopeSelectorView().frame(maxWidth: .infinity).background(ColorPalette.gray)
BalanceNumberView().frame(maxWidth: .infinity)
List {
DashboardNavigationView(
height: geometry.size.height - ScopeSelectorView.height - BalanceNumberView.height
).frame(maxWidth: .infinity).listRowInsets(.zero)
}
}
}.background(Color.red).edgesIgnoringSafeArea(.all)
}
}
4 ответа
Поскольку вы не прошли spacing
аргумент VStack
, он выбирает интервал по умолчанию в зависимости от контекста. Если вам не нужен интервал, укажите 0 явно.
VStack(spacing: 0) {
// content here
}
Я использую это,
.padding(.top, -8)
Подробнее здесь,
VStack(spacing: 0) {
List { ...
}
VStack{ ... }.padding(.top, -8)
}
Отдельно
Ты можешь использовать offset
модификатор для любого вида, чтобы он выглядел по-разному для каждого контента отдельно:
VStack {
Circle()
Circle().offset(x: 0, y: -20)
Circle().offset(x: 0, y: 40)
}
Обратите внимание, что он может быть отрицательным в обоих направлениях.
Все сразу
Также VStack
а также HStack
иметь аргумент под названием spacing
и вы можете установить его на 0
или любое другое число, которое необходимо применить ко всем элементам.
VStack(spacing: 0) {
Circle()
Circle()
}
Обратите внимание, что при необходимости он может быть отрицательным.
Например, вам нужно передать аргумент пробела в V Stack...
VStack(spacing: 0) {
Text("list one")
.padding()
Text("list one")
.padding()
}