Die List in Swift UI - Teil 8 - Trennlinien


Nicht immer sind die Trennlinien zwischen den Listenelementen gewünscht. iOS stellt sie immer automatisch dar, sie können aber mit nur einen Modifier leicht entfernt werden.

.listRowSeparator(.hidden)

In manchen Situationen ist die Trennlinien vielleicht nicht so störend, lediglich ihre Farbe passt nicht zum Design der App. Seit iOS15 kann dies Farbe mit einem Modifier verändert werden.

.listRowSeparatorTintColor(red0.2green0blue1.0opacity0.5) )

import SwiftUI


struct ContentViewView {

    

    @ObservedObject var repo = PersonsRepository(randomPersonsCount10)

    

    init() {

        let customAppearance = UINavigationBarAppearance()

        // Backgroundcolor

        customAppearance.backgroundColor = UIColor.lightGray

        // Font color for navigationBarTitleDisplayMode large

        customAppearance.largeTitleTextAttributes = [.foregroundColorUIColor.white]

        // Font color for navigationBarTitleDisplayMode inline

        customAppearance.titleTextAttributes = [.foregroundColorUIColor.white]

        

        UINavigationBar.appearance().standardAppearance = customAppearance

        UINavigationBar.appearance().compactAppearance = customAppearance

        UINavigationBar.appearance().scrollEdgeAppearance = customAppearance

    }

    

    var body: some View {

        

        NavigationView {

            List {

                ForEach (self.repo.getSections(), id:\.self ) { section in

                    Section(header: SectionHeader(headlineText: section)) {

                        ForEach(self.repo.persons.filter {$0.company == section}  , id: \.id) { person in

                            NavigationLink (destination: PersonDetailView(person: person))

                            {

                                PersonListCell(person: person)

                            }

                            .swipeActions(edge: .leading , allowsFullSwipe: true) {

                                Button {

                                    print("Sent Button")

                                } label: {

                                    Label("Send", systemImage: "paperplane.fill")

                                }

                                .tint(.indigo)

                                

                                Button {

                                    print("Bookmark Button")

                                } label: {

                                    Label("Bookmark", systemImage: "bookmark.circle")

                                }

                                .tint(.teal)

                            }

                            

                            .swipeActions(edge: .trailing , allowsFullSwipe: true) {

                                Button {

                                    withAnimation {

                                        self.repo.delete(person: person)

                                    }

                                } label: {

                                    Label("Delete", systemImage: "trash.fill")

                                }

                                .tint(.red)

                            }

                        }

                    }

                }

                //.listRowSeparator(.hidden, edges: .top)

                .listRowSeparatorTintColor(red0.2green0blue1.0opacity0.5) )

                

            }.listStyle(PlainListStyle())

                .navigationTitle("List and People")

                .navigationBarTitleDisplayMode(.large)

                .navigationBarItems(trailing:

                                        Button(action: {

                    self.repo.addRandomPerson()

                }) {

                    Image(systemName: "plus.circle.fill")

                } )

        }

    }

}

Stacks Image 198

Geschrieben am: 18.08.2021
Technologien: SwiftUI, List