Post

Replies

Boosts

Views

Activity

Reply to SwiftUI Animations inside NavigationView
After 3 months I finally found a solution which I would like to share with you. There are two steps you need to take to get it to work: Make the animation explicit. That means: use .withAnimation{} instead of .animation(). Dispatch to main queue (DispatchQueue.main.async{}) before calling .withAnimation. I have no idea why this is needed. There is an article by javier on swift-lab called "Advanced SwiftUI animations" that helped me a lot. (Unfortunately the forum doesn't allow me to add a link.) Here is the working result: import SwiftUI struct ContentView: View {     @State private var isAnimating = false     var body: some View {         let animation = Animation             .linear             .repeatForever(autoreverses: false)         return Image(systemName: "iphone")             .rotationEffect(.degrees(isAnimating ? 360 : 0))             .onAppear {                 DispatchQueue.main.async {                     withAnimation(animation) {                         isAnimating = true                     }                 }             }     } } struct ContentView_Previews: PreviewProvider {     static var previews: some View {         Group {             ContentView()                 .previewDisplayName("Working")             NavigationView {                 ContentView()             }             .previewDisplayName("Now also working")         }     } }
Sep ’21