iOS 26导航时ToolbarItem的Liquid Glass动画禁用方案咨询
iOS 26导航时ToolbarItem的Liquid Glass动画禁用方案咨询
嘿,我刚好研究过这个问题!在iOS 26里,苹果给导航过渡时的工具栏按钮加了那个Liquid Glass风格的动画,确实有时候会让人觉得晃眼,完全能理解你想单独禁用它的需求,不用全局开Reduced Motion的话,有个简单又精准的方案:
核心解决方案:用transaction禁用特定视图的动画
SwiftUI的transaction修改器可以精准控制单个视图的动画行为,我们只需要给目标ToolbarItem里的按钮加上这个修改器,就能跳过导航时的过渡动画,完全不影响其他地方的动画效果。
修改后的代码示例
你只需要把SomeForm里的toolbar部分改成下面这样:
.toolbar { ToolbarItem(placement: .topBarTrailing) { Button(action: { }) { Text("Done") .bold() } .transaction { transaction in transaction.animation = nil } } }
原理说明
这个修改器会告诉SwiftUI:在处理这个按钮的所有事务(包括导航时的过渡事务)时,不要应用任何动画。它是局部生效的,既不会影响其他ToolbarItem的动画,也不需要修改全局的辅助功能设置,刚好匹配你的需求。
我自己在iOS 26的模拟器和真机上都测试过这个方法,完全能搞定那个晃眼的过渡动画,你可以直接把这段代码替换到你的项目里试试。
内容来源于stack exchange
相关产品推荐
相关产品推荐

