私はSwiftUIのList
から「行」セパレーターを削除しようとしています。
List
のドキュメントを調べましたが、その修飾子を見つけることができませんでした。
任意の助けいただければ幸いです。
ForEach
の代わりにScrollView
内でList
を使用して、スタイルのない動的ビューに使用できます。
IOS向けのSwiftUIのUITableView
の後ろにはList
があります。だから削除する
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")
}
}
このソリューションは正しく動作しますが、ViewModifier
を使用して作業をクリーンアップしましょう
public struct ListSeparatorStyleNoneModifier: ViewModifier {
public func body(content: Content) -> some View {
content.onAppear {
UITableView.appearance().separatorStyle = .none
}.onDisappear {
UITableView.appearance().separatorStyle = .singleLine
}
}
}
次に、詳細を非表示にするのに役立つ小さな拡張機能を作成しましょう
extension View {
public func listSeparatorStyleNone() -> some View {
modifier(ListSeparatorStyleNoneModifier())
}
}
ご覧のとおり、外観設定コードをきちんとした小さなビュー修飾子にラップしました。あなたは今それを直接宣言することができます
List {
Text("1")
Text("2")
Text("3")
}.listSeparatorStyleNone()
現在の回避策は、UIAppearance
を介してそれらを削除することです:
UITableView.appearance(whenContainedInInstancesOf:
[UIHostingController<ContentView>.self]
).separatorStyle = .none
初期化子にUITableView.appearance().separatorColor = .clear
を追加する
struct SomeView: View {
init() {
UITableView.appearance().separatorColor = .clear
}
}
この問題を解決してください。