2012-09-15 19 views
9

पर काम नहीं कर रहा है मुझे एक UIView एनीमेशन मिल रहा है जिस पर मुझे अपने आईओएस ऐप में रद्द करने की आवश्यकता है। मैंने यह कोशिश की है:UIView एनीमेशन को रद्द करना - self.view.layer removeAllAnimimations

[self.view.layer removeAllAnimations]; 

लेकिन यह काम नहीं किया। एनीमेशन जारी रखा। यहां मेरा एनीमेशन कोड है:

[UIView animateWithDuration:1.4 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ 
recognizer.view.transform = CGAffineTransformTranslate(recognizer.view.transform, translation.x, translation.y); 
} completion:^(BOOL finished) { 

      NSLog(@"completed animation, now do whatever"); 
     }]; 

क्या किसी के पास कोई विचार है कि यह क्यों काम नहीं कर रहा है?

+2

आप दृश्य पहचानकर्ता है कि एनीमेशन जोड़ रहे हैं, इसलिए आपको लगता है कि एक ही दृश्य की परत से निकालने के लिए होगा। तो [self.view.layer removeAllAnimations] के बजाय आप [identizer.view.layer removeAllAnimations] करना चाहते हैं। – Till

+1

हाय। धन्यवाद - अब कुछ हो रहा है, लेकिन यह एक और समस्या पेश करता है। यह एनीमेशन को अंत में तुरंत वहां रोकता है। मैं इसे अपनी वर्तमान स्थिति में रुकना चाहता हूं - यह स्थिति उस स्थिति में है जब मैं एनीमेशन को रोकना चाहता हूं - अंत में कूद नहीं। क्या ऐसा ऐसा किया जा सकता है? –

+2

'पहचानकर्ता .view.layer.presentationLayer' देखें। इसमें मध्य परिवर्तन होगा, बस वर्तमान परत पर सेट करें: 'identityizer.view.layer.transform = identityizer.view.layer.presentationLayer.transform;' ... और अधिक काम की आवश्यकता हो सकती है। – Mazyod

उत्तर

10

आप उस एनीमेशन को पहचानकर्ता के दृश्य में जोड़ रहे हैं, इसलिए आपको इसे उसी दृश्य की परत से हटाना होगा।

तो बजाय

[self.view.layer removeAllAnimations]; 

आप

[recognizer.view.layer removeAllAnimations]; 

कर सकते हैं और परिवर्तन की वर्तमान स्थिति बनाए रखने के लिए, लाने प्रस्तुति परत से है कि एक। प्रस्तुति परत वह है जो वास्तव में एनीमेशन के दौरान परिवर्तनों को प्रतिबिंबित करती है।

recognizer.view.layer.transform = recognizer.view.layer.presentationLayer.transform; 
+1

पहले के लिए धन्यवाद 2. स्थिति को रखने के लिए अंतिम खंड के साथ समस्या । यह त्रुटि प्राप्त करें: "प्रॉपर्टी 'ट्रांसफॉर्म' प्रकार 'आईडी' ' –

3

ठीक है - बस इसे समझ लिया। छवि दृश्य के शीर्ष पर इमेज व्यू के शीर्ष पर इशारा पहचानकर्ता से एनिमेटेड घटक बेंग को बदल दिया। अब, एनीमेशन को रोकने के लिए कोड से ठीक पहले, मेरे पास है:

truckView.frame = [[trackView.layer presentationLayer] frame]; 
[truckView.layer removeAllAnimations]; 

तो ऐसा करने का यह तरीका है। मदद कि मुझे इस सवाल का जवाब करने के लिए नेतृत्व के लिए धन्यवाद,

सैम

+0

पर नहीं मिली है, मैं इसका उपयोग कर रहा हूं लेकिन सोचने लग रहा हूं क्योंकि यह सभी एनिमेशन को हटाने से पहले फ्रेम प्राप्त करता है, एनीमेशन वास्तव में थोड़ा सा जारी रहता है और फ्रेम सेट पुराना था – MobileMon

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