You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中如何禁用视图切换时的过渡动画效果?

SwiftUI禁用NavigationLink切换视图的过渡动画

有效解决方案

方案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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:40:18