首页 > 解决方案 > SwiftUI 中的动画绑定

问题描述

我有以下代码部分显示或隐藏Test视图,具体取决于Binding<Bool>. testVisible.toggle()我可以将调用包装在 awithAnimation中,但是,理想情况下,我想确保visible绑定始终是动画的,即使在没有 a 的情况下调用也是如此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)
    }
}

标签: swiftanimationbindingswiftui

解决方案


.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))
    }
}

推荐阅读