Удалите лишние разделители под списком в SwiftUI
Я создал простой List
как показано ниже, но под ним есть дополнительные разделители.
List {
Text("Item 1")
Text("Item 2")
Text("Item 3")
}
Результат:
Я попытался VStack
List в VStack
и добавить Spacer()
как VStack
ниже, но он не работает должным образом. Удаляет около половины пустых клеток.
VStack{
List {
Text("Item 1")
Text("Item 2")
Text("Item 3")
}
Spacer()
}
Как бы я удалил эти дополнительные разделители в SwiftUI?
Ответы
Ответ 1
Это не идеальное решение, но вы можете использовать ScrollView, где каждая ячейка создается с помощью вызова ForEach, а разделители создаются с помощью Divider().
Изменение: я говорил с инженерами Apple на WWDC об этом. Они слышали много отзывов относительно удаления/замены разделителей. Тем не менее, пока мой ответ выше является их рекомендацией.
Ответ 2
Не идеальное решение, но вы можете создать стиль списка .grouped
помощью .listStyle(.grouped)
который удаляет все пустые ячейки, которые могут появиться ниже.
Ответ 3
Добавление белого прямоangularьника в качестве нижнего колонтитула и с 0 EdgeInsets работало для меня:
struct Footer: View {
var body: some View {
Rectangle()
.foregroundColor(.white)
.listRowInsets(EdgeInsets())
}
}
struct Timeline : View {
var body: some View {
List {
Section(footer: Footer()) {
Text("Item 1")
Text("Item 2")
Text("Item 3")
}
}
}
}
Единственная проблема в том, что он также добавляет заголовок, и я не уверен, как от него избавиться.
Ответ 4
Вы можете добавить это для удаления разделителя.
UITableView.appearance().separatorColor = .clear
Ответ 5
Здесь один из способов.
List {
Section(footer: Text(""))) {
Text("One")
Text("Two")
Text("Three")
}
}
Вместо представления "Текст" в нижнем колонтитуле вы можете создать свой собственный. Примечание. -I пытался использовать EmptyView(), но это фактически не удаляет избыточные разделители.
Ответ 6
Два способа сделать это
================================================== ======
struct ContentView: View {
var body: some View {
List {
Text("One")
Text("Two")
Text("Three")
}.listStyle(.grouped)
}
}
================================================== ======
struct ContentView: View {
var body: some View {
List {
Section(header: Text("Header"), footer: Text("Footer")) {
Text("One")
Text("Two")
Text("Three")
}
}
}
}
Я рекомендую стиль сгруппированного списка
Ответ 7
Используйте .listStyle(GroupedListStyle())
, который удаляет все пустые ячейки, которые могут появиться ниже.
List {
Text("Item 1")
Text("Item 2")
Text("Item 3")
}.listStyle(GroupedListStyle())
Ответ 8
Попробуйте это, если вы хотите использовать раздел, там все еще виден нижний колонтитул с этим:
List {
Section(footer: Text("")) {
Text("My text")
}
EmptyView()
}
Я придумал хакерский способ скрыть нижний колонтитул, если у вас нет раздела:
List {
Text("Item 1")
Text("Item 2")
// Adding empty section with footer
Section(footer:
Rectangle()
.foregroundColor(.clear)
.background(Color(.systemBackground))){EmptyView()}
.padding(.horizontal, -15)
}
Ответ 9
Нет необходимости в стиле Section
или .grouped
!
SwiftUI List
для iOS имеет UITableView
. Таким образом, чтобы удалить
- Дополнительные разделители (под списком):
вам нужен tableFooterView
и удалить
- Все разделители (включая фактические):
вам нужно separatorStyle
, чтобы быть .none
init() {
// To remove only extra separators below the list:
UITableView.appearance().tableFooterView = UIView()
// To remove all separators including the actual ones:
UITableView.appearance().separatorStyle = .none
}
var body: some View {
List {
Text("Item 1")
Text("Item 2")
Text("Item 3")
}
}
Обратите внимание, что устраняет все разделители таблиц/списков. Таким образом, вы можете переключать его такими способами, как onAppear()
и т.д. По своему усмотрению.