Search code examples
swiftswiftuiswiftui-animation

Is there any way to remove the fading animation on .onDelete SwiftUI


The code is below. I want to delete the final fading animation when onDelete is tapped.

struct ContentView: View {
    @State var names = ["david", "john", "amber"]
    
    var body: some View {
        List {
            ForEach(names, id: \.self) { (item) in
                Text(item)
            }.onDelete(perform: self.deleteItem)
        }
    }
    
    private func deleteItem(at indexSet: IndexSet) {
        self.names.remove(atOffsets: indexSet)
    }
}

I tried to use .animation() but none works


Solution

  • A possible solution is to force redraw the List:

    struct ContentView: View {
        @State private var names = ["david", "john", "amber"]
        @State private var listId = UUID()
    
        var body: some View {
            List {
                ForEach(names, id: \.self) { item in
                    Text(item)
                }
                .onDelete(perform: deleteItem)
            }
            .id(listId)
        }
    
        private func deleteItem(at indexSet: IndexSet) {
            names.remove(atOffsets: indexSet)
            listId = UUID()
        }
    }