XCode (बग?)

Jan 10 2021

मैं अपनी स्क्रीन पर एक सर्कल के साथ दो सर्किलों में एक ZStack में स्केल करने की कोशिश कर रहा हूं जो स्केलएफ़ेक्ट () के साथ आसानी से और बाहर निकलता है, और अपारदर्शिता को बदलता है। मैंने इसे एक अलग SwiftUI फ़ाइल में बनाया, जहाँ कोई समस्या नहीं थी, लेकिन एक बार जब मैंने इसे अपने ContentView () में डाला तो यह अजीब बग होने लगा।

कृपया पृष्ठभूमि में मंडलियों को अनदेखा करें, यह सिर्फ मेरी पृष्ठभूमि दृश्य है। लेकिन नीले रंग के थोड़ा अलग रंगों के उन दो हलकों को देखें? वे स्क्रीन में प्रवेश करते और बाहर निकलते रहते हैं, गहरे नीले रंग के "प्लस" आइकन के पीछे आते हैं और फिर निकल जाते हैं। इस बीच, मैं उन्हें "प्लस" सर्कल के पीछे होना चाहूंगा।

यहाँ छवि विवरण दर्ज करें

यहाँ छवि विवरण दर्ज करें

छवि विवरण यहां दर्ज करें क्या यह किसी प्रकार के XCode बग के कारण है? या मैंने अपने कोड में कुछ गलत लिखा है? अगर कोई स्पष्ट कर सकता है तो मैं वास्तव में इसकी सराहना करूंगा :)

यहाँ मेरा कोड है। मैंने एक @State निजी var बटन बनाया था। किसी भी तरह से इसे गलत समझा और कहा, कि बटन दिखाई देने के बाद, मंडलियों को एनिमेट करना शुरू कर देना चाहिए। क्या कोड में कुछ गड़बड़ है?

 ZStack {
                            Group {
                                Circle()
                                        .fill(Color("Background2").opacity(self.buttonIsAnimating ? 0.6 : 0))
                                        .frame(width: 75, height: 75, alignment: .center)
                                    .scaleEffect(self.buttonIsAnimating ? 1 : 0)
                                Circle()
                                    .fill(Color("Background3").opacity(self.buttonIsAnimating ? 0.7 : 0))
                                    .frame(width: 89, height: 89, alignment: .center)
                                    .scaleEffect(self.buttonIsAnimating ? 1 : 0)
                            }
                            .animation(Animation.easeInOut(duration: 2).repeatForever(autoreverses: true))
                            Button(action: {
                                self.showingAddANewToDoView.toggle()
                            }) {
                                Image(systemName: "plus.circle.fill")
                                    .resizable()
                                    .scaledToFit()
                                    .background(Circle().fill(Color("Background")))
                                    .foregroundColor(Color("Background4"))
                                    .frame(width: 60, height: 60)
                                    .padding(5)
                            }//: Button
                            .onAppear {
                                self.buttonIsAnimating.toggle()
                            }
                        }

जवाब

1 Asperi Jan 10 2021 at 11:48

राज्य के लिए लिंक एनीमेशन के साथ प्रयास करें, जैसे

Group {
    Circle()
            .fill(Color("Background2").opacity(self.buttonIsAnimating ? 0.6 : 0))
            .frame(width: 75, height: 75, alignment: .center)
        .scaleEffect(self.buttonIsAnimating ? 1 : 0)
    Circle()
        .fill(Color("Background3").opacity(self.buttonIsAnimating ? 0.7 : 0))
        .frame(width: 89, height: 89, alignment: .center)
        .scaleEffect(self.buttonIsAnimating ? 1 : 0)
}
.animation(Animation.easeInOut(duration: 2).repeatForever(autoreverses: true), 
   value: self.buttonIsAnimating)