मैं बाएं/दाएं स्वाइप कार्यक्षमता को लागू करने का प्रयास कर रहा हूं जहां मैं चाहता हूं कि उपयोगकर्ता दृश्यों के बीच बाएं/दाएं स्वाइप करें (इस उदाहरण में सर्कल और आयताकार)। जबकि मेरे पास काम करने वाले विचारों के बीच बाएं/दाएं का पता लगाना और स्विच करना है, मुझे यकीन नहीं है कि इसे कैसे कार्यान्वित किया जाए ताकि उपयोगकर्ता उदाहरण के लिए ड्रैग हो जाए, उपयोगकर्ता धीरे-धीरे अगला दृश्य देखता है जब तक कि वह जगह में न हो जाए।

यहाँ यह वर्तमान में कैसा दिखता है और कोड।

struct Swipe: View {
    @State private var xOffset: CGFloat = 0.0
    @State private var showCircle: Bool = false
    @State private var showRectangle: Bool = true
    
    var body: some View {
        VStack {
            Text("Current xOffset: \(xOffset)")
            ZStack {
                if showCircle {
                    Circle()
                        .frame(width: 250, height: 250)
                }
                
                if showRectangle {
                    Rectangle()
                        .foregroundColor(Color.red)
                        .frame(width: 100, height: 100)
                        .offset(x: xOffset)
                }
            }
            .gesture(
                DragGesture()
                    .onChanged {
                        value in
                        withAnimation(Animation.spring()) {
                            xOffset = value.translation.width
                        }
                    }
                    .onEnded { value in
                        if value.predictedEndLocation.x < -100 || value.predictedEndLocation.x > 100 {
                            showCircle.toggle()
                            showRectangle.toggle()
                        }
                        xOffset = 0.0
                    }
            )
        }
    }
}

enter image description here

लेकिन मैं जो चाहता हूं वह DragGesture के दौरान संक्रमण है। मैंने इसे यथासंभव सर्वोत्तम रूप से आकर्षित करने का प्रयास किया है जहां वह काला रंग पृष्ठभूमि है, जबकि यह अगले दृश्य में परिवर्तित हो रहा है। यहां छवि विवरण दर्ज करें

किसी भी मदद की सराहना की जाती है, धन्यवाद।

0
elyakshaver 23 अक्टूबर 2021, 04:32

1 उत्तर

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

अगर आप पेजिंग जैसा अपना एनिमेशन चाहते हैं, तो TabView का उपयोग करें:

TabView(selection: $selectedPage) {
    ForEach(pageList, id: \.self) { page in
        if page == .circle {
            CircleView()
        } else { 
            RectangleView()
        }
    }
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))

याद रखें कि यदि पृष्ठसूची का प्रकार Array<T> है तो चयनितपृष्ठ का प्रकार T होना चाहिए

1
Spiritofthecore 23 अक्टूबर 2021, 16:04
यह सोचने के लिए कि कुछ इतना आसान था, बहुत-बहुत धन्यवाद! वास्तव में आप नहीं जानते कि आप क्या नहीं जानते हैं। भविष्य में इस तरह की चीजों को खोजने के बारे में कोई सलाह?
 – 
elyakshaver
23 अक्टूबर 2021, 17:59