SwiftUI中如何禁用视图切换时的过渡动画效果?
有效解决方案
方案1:为单个NavigationLink禁用动画
直接在每个NavigationLink上添加.transaction修饰符,强制关闭切换动画:
NavigationLink(destination: MainView()) { Image(systemName: "house") .font(.system(size: 24, weight: .medium, design: .default)) .foregroundColor(.gray) .frame(minWidth: 100, minHeight: 50) } .transaction { $0.animation = nil }
将该修饰符应用到BottomDockView内所有的NavigationLink即可。
方案2:全局禁用NavigationView内的所有导航动画
如果需要统一关闭整个导航容器内的切换动画,给NavigationView添加事务修饰符:
NavigationView { VStack { ListView() BottomDockView() .padding(.top, -8) } } .navigationTitle("Transfers") .transaction { $0.animation = nil }
关于之前尝试无效的原因
animation(_:value:)仅作用于视图自身的属性动画,而NavigationLink的切换动画属于导航栈的系统内置动画,必须通过修改事务(transaction)来覆盖系统默认配置。
内容的提问来源于stack exchange,提问作者user24038863
相关产品推荐
相关产品推荐

