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

SwiftUI:点击特定视图时移除NavigationLink的动画

解决NavigationLink点击收藏按钮时的动画问题

要实现点击收藏按钮不触发NavigationLink的透明度动画,同时保留其他区域的动画效果,只需要给收藏按钮设置更高优先级的点击手势,让按钮的点击事件优先被处理,阻止NavigationLink响应这个点击。

修改后的代码:

1. 更新FavoriteButton代码

Button(action: {
    isFavorite.toggle()
}) {
    Image(systemName: isFavorite ? "star.fill" : "star")
}
.highPriorityGesture(TapGesture()) // 关键:让按钮手势优先级高于NavigationLink

2. 其他代码保持不变

BookRow和ScrollView的代码不需要改动,只需要给FavoriteButton加上上述的.highPriorityGesture(TapGesture())即可。

原理说明

NavigationLink的label默认会响应整个区域的点击事件并播放动画,通过给收藏按钮添加高优先级的点击手势,当点击按钮时,手势会被按钮优先捕获,NavigationLink不会接收到这个点击信号,自然就不会触发透明度动画。而点击BookRow的其他区域时,NavigationLink的点击事件正常触发,动画也能正常生效。

内容的提问来源于stack exchange,提问作者ST K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:36:26