2009-10-14 26 views
8

मैं कोर एनीमेशन का उपयोग करके एक बटन को एनिमेट कर रहा हूं, अब एक निश्चित स्थिति पर मैं उस एनीमेशन को रोकना चाहता हूं मैं एनीमेशन को कैसे रोकूं? लक्ष्य के लिए संदेश: forKey:कोर एनीमेशन को कैसे रोकें?

यहाँ बटन

-(void)animateButton:(UIButton *)btnName 
{ 
    CABasicAnimation *pulseAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
    pulseAnimation.duration = .5; 
    pulseAnimation.toValue = [NSNumber numberWithFloat:1.1]; 
    pulseAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    pulseAnimation.autoreverses = YES; 
    pulseAnimation.repeatCount = FLT_MAX; 

    [btnName.layer addAnimation:pulseAnimation forKey:nil]; 
} 
+1

पहले स्कैन पर, मैंने सोचा कि यह सवाल "श्मशान को कैसे रोकें" था :-) –

+0

क्षमा करें! अंतरिक्ष भूल जाओ –

उत्तर

22

चेतन करने के लिए से Core Animation Programming Guide

शुरू और स्पष्ट एनिमेशन

रोक तुम एक addAnimation भेजकर एक स्पष्ट एनीमेशन शुरू तरीका है परत, एनीमेशन और पैरामीटर के रूप में एक पहचानकर्ता गुजर रहा है। एक बार लक्ष्य परत में जोड़ा जाने पर स्पष्ट एनीमेशन तब तक चलता है जब तक कि एनीमेशन पूर्ण नहीं हो जाता है, या इसे परत से हटा दिया जाता है। एक परत में एनीमेशन जोड़ने के लिए उपयोग किया जाने वाला पहचानकर्ता को निकालने के लिए इसे रोकने के लिए भी प्रयोग किया जाता हैएनीमेशन फोर्के:। आप परत को हटाकर एक परत के लिए सभी एनिमेशन को रोक सकते हैं AAAAAnimations संदेश।

7

जैसा कि नल इंगित करता है, आपको बस अपनी एनीमेशन (स्ट्रिंग इत्यादि) के लिए एक कुंजी असाइन करने की आवश्यकता है, फिर -removeAnimationForKey का उपयोग करें: उस विशेष एनीमेशन को हटाने के लिए अपनी परत पर।

हालांकि, यदि आप ऐसा करते हैं, तो परत को अपने पूर्व-एनीमेशन स्थिति में वापस जाना चाहिए। एनिमेटेड प्रॉपर्टी के साथ लेयर स्टॉप को अपने वर्तमान मूल्य को बनाए रखने के लिए, आप this answer में जो वर्णन करते हैं, वह करना चाहते हैं: एनिमेटिंग लेयर के लिए प्रेजेंटेशन लेयर प्राप्त करें, एनिमेटेड प्रॉपर्टी के वर्तमान मान को पढ़ें, एनिमेटिंग लेयर पर वह मान सेट करें , और केवल तब एनीमेशन हटा दें।

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