I\'ve created a simple List
as below, but there are extra separators below it.
List {
Text(\"Item 1\")
Text(\"Item 2\")
Text(\"Item 3\")
You can add this, for remove separator.
UITableView.appearance().separatorColor = .clear
iOS 14 doesn't show extra separators below the list by default and to removing all separators, you need to use a LazyVStack
inside a ScrollView
instead.
Section
or .grouped
style!There is a UITableView
behind SwiftUI's List
for iOS 13. So to remove
you need a tableFooterView
and to remove.
Note that iOS 14 doesn't show extra separators below the list by default.
you need separatorStyle
to be .none
init() {
if #available(iOS 14.0, *) {
// iOS 14 doesn't have extra separators below the list by default.
} else {
// 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")
}
}
Note that it eliminates all tables/lists's separators. So you can toggle it in a methods like onAppear()
or etc. as you wish.
Not an ideal solution, but you can make the list style .grouped
by .listStyle(.grouped)
which removes any empty cells that may come below.
Here's one way.
List {
Section(footer: Text(""))) {
Text("One")
Text("Two")
Text("Three")
}
}
Instead of the Text view in the footer, you can create your own. Note -I tried EmptyView() but that doesn't actually remove the redundant separators.
Try this, if you want to use the section, There's still a footer visible with this:
List {
Section(footer: Text("")) {
Text("My text")
}
EmptyView()
}
I came up with a hacky way to hide footer in case you don't have any section:
List {
Text("Item 1")
Text("Item 2")
// Adding empty section with footer
Section(footer:
Rectangle()
.foregroundColor(.clear)
.background(Color(.systemBackground))){EmptyView()}
.padding(.horizontal, -15)
}
Adding a white rectangle as a footer and with 0 EdgeInsets worked for me:
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")
}
}
}
}
The only problem is it also adds a Header and I'm not sure how to get rid of it.