SwiftUI 中的动画绑定

Posted

技术标签:

【中文标题】SwiftUI 中的动画绑定【英文标题】:Animating Bindings in SwiftUI 【发布时间】:2020-09-11 12:00:36 【问题描述】:

我有以下代码根据Binding<Bool> 部分显示或隐藏Test 视图。我可以将testVisible.toggle() 调用包装在withAnimation 中,但是,理想情况下,我想确保visible 绑定始终是动画的,即使在没有withAnimation 的情况下调用也是如此。如何确保每当visible 绑定发生变化时,变化是动画的?

struct ContentView: View 
    @State var testVisible: Bool = true
    
    var body: some View 
        ZStack 
            Color.white
                .onTapGesture 
                    testVisible.toggle()
                
            
            Test(visible: $testVisible)
        
            
    


struct Test: View 
    @Binding var visible: Bool
    
    var body: some View 
        Text("Test")
            .opacity(visible ? 0.5 : 0)
    

【问题讨论】:

【参考方案1】:

.animation() 修饰符添加到Text 视图:

struct Test: View 
    @Binding var visible: Bool
    
    var body: some View 
        Text("Test")
            .opacity(visible ? 0.5 : 0)
            .animation(.linear(duration: 0.5))
    

【讨论】:

以上是关于SwiftUI 中的动画绑定的主要内容,如果未能解决你的问题,请参考以下文章

一行代码为特定状态绑定SwiftUI视图动画

一行代码为特定状态绑定SwiftUI视图动画

如果操作未立即完成,则 SwiftUI 视图在绑定到 @Published var 时没有动画

如何绑定 SwiftUI 和 UIViewController 行为

动画不适用于 SwiftUI 视图状态更改

如何在 SwiftUI 的 ScrollView 中制作动画? SwiftUI 中的手风琴风格动画