У меня есть List
с ListRows
, которые имеют некоторое динамическое c содержимое. У меня есть «верхний ряд» с кнопкой, чтобы развернуть и показать «нижний ряд» - примерно так:
VStack(alignment: .leading) {
HStack {
Text("Test")
.font(.headline)
.background(Color.green)
Spacer()
Button(action: {self.showBody.toggle()},
label: {Image(systemName: "icloud.and.arrow.down")})
}
.background(Color.yellow)
if showBody {
Text("<insert body>")
.font(Constants.Fonts.NotesRow.preview)
.background(Color.blue)
}
}
Вот как это выглядит. Я установил .listRowInsets
на 0, но обратите внимание, что сверху и снизу есть отступы (это черные линии выше и ниже цветных линий).

Когда я нажимаю «развернуть», отступы меняются, и это дает довольно неприятный опыт:

Есть ли способ исправить это так что строка расширяется?
Обновление
Похоже, что если я установлю .padding()
в строке, я получу правильное поведение. Если я попытаюсь изменить отступ меньше, он будет иметь нежелательное поведение «уменьшения пространства заполнения».
Вот пример того, как он работает, как ожидалось с .padding()
- обратите внимание, что серые пространства одинаковы вокруг содержимое строки и полностью заняли строку (ie, черного цвета нет):

Если я изменю отступ на .padding(5)
, вы увидите, что строка не занимает всю строку, и появляется черный цвет из строки. При расширении поглощает черных, что делает опыт нежелательным:
