मेरे पास निम्न कोड है जो 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
BenJacob 11 सितंबर 2020, 15:00

1 उत्तर

सबसे बढ़िया उत्तर

Text दृश्य में एक .animation() संशोधक जोड़ें:

struct Test: View {
    @Binding var visible: Bool
    
    var body: some View {
        Text("Test")
            .opacity(visible ? 0.5 : 0)
            .animation(.linear(duration: 0.5))
    }
}
2
vacawama 11 सितंबर 2020, 15:13