Alright, I have tried to follow your advice and I don't see how this can help. I have this setup: struct AnimatedView: View { @ObservedObject var viewModel: ViewModel var body: some View { let width = viewModel.isExpanded ? 120.0 : 50.0 let height = viewModel.isExpanded ? 400.0 : 100.0 let cornerRadius = viewModel.isExpanded ? 42.0 : 8.0 Color(uiColor: .red) .frame(width: width, height: height) .cornerRadius(cornerRadius) } } The hosting controller is mounted to the top of its parent via constraints. Then I do this in my tap handler for a totally separate button: @objc func tap() { withAnimation(Animation.easeInOut(duration: 0.5), { viewModel.isExpanded.toggle() }) } And what I observe here is that my hosting controller's view immediately teleports to the new frame - its center is immediately in the position where it should be only at the end of the animation. Meanwhile, the SwiftUI content is animating correctly, except it has already teleported. I have tried to use your answer @DTS Engineer I have
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: