2016-03-23 11 views
5

मेरे पास एक संग्रह दृश्य है और मैं उपयोगकर्ता द्वारा चुने गए CollectionViewCell के अंदर एक एनीमेशन बनाना चाहता हूं। मैंने animateKeyframesWithDuration का उपयोग करना चुना क्योंकि मैं कदम से एक कस्टम एनीमेशन चरण बनाना चाहता हूं। मेरे कोड इस तरह दिखता है: जब चयनित होआईओएस बंद हो गया है पूरा होने से पहले अवधि

func animate() { 
    UIView.animateKeyframesWithDuration(1.0, delay: 0.0, options: .AllowUserInteraction, animations: {() -> Void in 
     UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 0.5, animations: {() -> Void in 
      // First step 
     }) 
     UIView.addKeyframeWithRelativeStartTime(0.5, relativeDuration: 0.5, animations: {() -> Void in 
      // Second step 
     }) 
     }) { (finished: Bool) -> Void in 
      if self.shouldStopAnimating { 
       self.loadingView.layer.removeAllAnimations() 
      } else { 
       self.animate() 
      } 
     } 
} 

यह कस्टम CollectionViewCell अंदर निष्पादित किया जाता है। समस्या यह है कि मैं कुछ निश्चित बिंदु पर तुरंत एनीमेशन को रोकना चाहता हूं। लेकिन जब मैं ऐसा करता हूं, एनीमेशन पूरी तरह से बंद नहीं होता है, तो यह शेष एनीमेशन को एक अलग सेल (शायद अंतिम पुन: उपयोग सेल) पर ले जाता है

मुझे समझ में नहीं आ रहा है कि यह क्यों हो रहा है। मैंने अलग-अलग दृष्टिकोणों की कोशिश की है, लेकिन उनमें से कोई भी सामान्य रूप से समापन ब्लॉक

किसी को भी इस बारे में कोई विचार है?

+0

आप इस के लिए एक समाधान मिला? – swalkner

उत्तर

0

परत से एनिमेशन को हटाने के बजाय आप एक बहुत ही कम अवधि के साथ एक और एनीमेशन जोड़ने का प्रयास कर सकते हैं जो दृश्य गुण सेट करता है जिसे आप एनिमेट करना बंद करना चाहते हैं।

कुछ इस तरह:

if self.shouldStopAnimating { 
    UIView.animateWithDuration(0.01, delay: 0.0, options: UIViewAnimationOptions.BeginFromCurrentState, animations: {() -> Void in 
     //set any relevant properties on self.loadingView or anything else you're animating 
     //you can either set them to the final animation values 
     //or set them as they currently are to cancel the animation 
    }) { (completed) -> Void in 
    }; 
} 

This answer may also be helpful.

+0

यह अभी भी काम नहीं करता है। मेरे चुने हुए सेल पर एनीमेशन सामान्य के रूप में बंद हो जाता है। वास्तविक समस्या यह है कि यह एक और सेल पर जारी है। मैंने UIView.setAnimationsEnabled (झूठी) के साथ भी कोशिश की है लेकिन व्यर्थ में। यह वास्तव में कष्टप्रद है – razvan

संबंधित मुद्दे