У меня есть VStack с несколькими дочерними представлениями (тот, что с синим фоном). VStack имеет горизонтальное заполнение. Я хочу, чтобы этот набор отступов был установлен для каждого дочернего элемента, но иногда у меня есть исключение, когда я хочу, чтобы этот дочерний элемент полностью достигал краев дисплея (две серые линии над кнопкой «Оформить заказ»). Есть ли способ, как позволить этому случиться? Я не хочу устанавливать отступы для каждого ребенка отдельно.
Вы можете применить отрицательный отступ к представлению, которое вы применили к VStack, это означает, что вы применили отступ в 16 точек к VStack, например, как это .padding(16) для всех направлений, что является значением по умолчанию. затем вы можете применить .padding(.horizontal,-16) к линиям, и они растянутся до конца экрана
Вот пример кода и снимок экрана для желаемого поведения.
struct VStackPadding: View {
var body: some View {
VStack{
RoundedRectangle(cornerRadius: 4)
.frame(width: .infinity,height: 3)
.padding(.horizontal, -16)
.padding(.bottom,16)
RoundedRectangle(cornerRadius: 4)
.frame(width: .infinity,height: 3)
}.padding(16)
}
}
Дети всегда следуют отступам родителей. попробуйте переместить свою линию на тот же уровень, что и ваш vstack. например, VStack {VStack {элементы} Divider() VStack {checkoutButton}}