简体   繁体   English

点击特定视图时如何在 SwiftUI NavigationLink 中删除动画

[英]How to remove animation in SwiftUI NavigationLink when tapping specific views

There is a favorite button in my view which has NavigationLink.在我的视图中有一个收藏按钮,它具有 NavigationLink。 Each time I press the favorite button, opacity animations also shows.每次我按下最喜欢的按钮时,也会显示不透明动画。 I don't want to show any animation while I tapping the favorite buttons.我不想在点击收藏按钮时显示任何动画。 I know how to remove animation at whole view, but I hope the animation works when I press outside of favorite buttons.我知道如何在整个视图中删除动画,但我希望当我按下最喜欢的按钮之外时动画能正常工作。

HStack {
    Image(systemName: "a.book.closed.fill")
        
    Text(book.name)
        
    Spacer()
        
    FavoriteButton(isFavorite: $isFavorite)
        .onChange(of: isFavorite) { newValue in
            book.isFavorite = newValue
            model.saveData()
        }
}

This is my book row view这是我的书行视图

ScrollView {
    ForEach(model.savedBookEntities) { elem in
        NavigationLink() {
            VocaView(book: elem)
        } label: {
            BookRow(book: elem)
        }
        .contextMenu() {
            // Some context menus
        }
    }
}

and this is my ScrollView in NavigationView这是我在 NavigationView 中的 ScrollView

Animation happens on animatable parameter changing.动画发生在可动画参数更改时。 If FavoriteButton does not change anything else inside, then try to disable animation for isFavorite , like如果FavoriteButton没有改变内部的任何其他内容,则尝试禁用isFavorite的动画,例如

HStack {
    Image(systemName: "a.book.closed.fill")
        
    Text(book.name)
        
    Spacer()
        
    FavoriteButton(isFavorite: $isFavorite)
        .onChange(of: isFavorite) { newValue in
            book.isFavorite = newValue
            model.saveData()
        }
        .animation(nil, value: isFavorite)   // << here !!
}
//.animation(nil, value: isFavorite)   // << or here !!

also book.isFavorite might affect, so if above would not work for you try the same with book.isFavorite . book.isFavorite也可能会影响,因此如果上述方法对您不起作用,请尝试使用book.isFavorite

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在 SwiftUI 中呈现 NavigationLink 时,过渡 animation 消失了 - Transition animation gone when presenting a NavigationLink in SwiftUI SwiftUI - 点击 NavigationLink 后底栏为空 - SwiftUI - Empty bottom bar after tapping NavigationLink 如何使用 NavigationLink 在 SwiftUI 视图之间传递数据 - How to pass data between SwiftUI views using NavigationLink 如何使用 Button Tap 移动 SwiftUI 中的视图或向 NavigationLink 添加操作? - How to move Views in SwiftUI with Button Tap or add an action to NavigationLink? 如何从 SwiftUI 中的形状创建 NavigationLink 或按钮,仅通过点击形状而不是其框架来触发 - How to create a NavigationLink or Button from a shape in SwiftUI that is only triggered by tapping on the shape but not its frame SwiftUI:如何在列表内的 NavigationLink 中删除插入符号 - SwiftUI: How to remove caret right in NavigationLink which is inside a List SwiftUI 在 NavigationLink 视图中隐藏 TabView 栏 - SwiftUI Hide TabView bar inside NavigationLink views 按下 NavigationLink 时的 SwiftUI 动作 - SwiftUI action when press on NavigationLink SwiftUI LazyVGrid NavigationLink 返回异常 animation - SwiftUI LazyVGrid NavigationLink has unusual animation on return 如何在 SwiftUI 中使用 NavigationView 和 NavigationLink? - How to use NavigationView and NavigationLink in SwiftUI?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM