Как я могу удалить минимальное вертикальное заполнение или минимальную высоту строки списка в SwiftUI?

#ios #xcode #list #swiftui

Вопрос:

Я пытаюсь добавить в свой список очень короткую строку с высотой рамки 2, но список добавляет нежелательное заполнение выше и ниже элемента списка или ограничивает его минимальной высотой, и я не знаю, как его удалить. Я привел следующее, чтобы проиллюстрировать проблему:

 struct ContentView: View {
    var body: some View {
        List {
            Color.red
                .frame(height: 2)
            Color.blue
                .frame(height: 2)
        }
    }
}
 

введите описание изображения здесь

Как я могу удалить это дополнение над и под элементом списка? То же самое происходит при использовании раздела и добавлении верхнего или нижнего колонтитула. Это не позволит мне иметь запись в списке с небольшой высотой рамки.

В LazyVStack у меня нет этой проблемы, но мне нужно использовать список.

Ответ №1:

  1. Используйте .environment(.defaultMinListRowHeight, 0) , чтобы каждая строка имела минимальную высоту 0. В противном случае каждая строка всегда будет иметь высоту не менее 44 (по умолчанию) баллов.
  2. Используйте .listRowInsets(EdgeInsets()) , чтобы в каждой строке не было вставки. Вы также могли бы это сделать .listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)) , что приводит к тому же.
 struct ContentView: View {
    var body: some View {
        List {
            Color.red
                .frame(height: 5)
                .listRowInsets(EdgeInsets()) /// 2.
            Color.blue
                .frame(height: 5)
                .listRowInsets(EdgeInsets())
        }
        .environment(.defaultMinListRowHeight, 0) /// 1.
    }
}
 

Результат:

Синие и красные линии расположены вертикально, без зазора между ними