2010-04-08 14 views
15

मैं animationDidStop फ़ंक्शन पर कॉल करने के लिए पृष्ठ के निचले हिस्से में उदाहरण का अनुसरण कर रहा हूं।एनीमेशनडिडटॉप के लिए CABasicAnimation प्रतिनिधि?

http://www.informit.com/articles/article.aspx?p=1168314&seqNum=2

लेखक का कहना है:

मैं एक उद्देश्य यह है कि विशेष रूप से डिजाइन किया गया है एनिमेशन के प्रतिनिधि होना है और सभी यह होता है लक्ष्य वस्तु के लिए एक संदर्भ पकड़ है, animationDidStop स्वीकार करते हैं: संदेश और फिर खुद को छोड़ दें।

यह पता चलता है कि आप ऐसा नहीं करना चाहिए:

[animation setDelegate:self]; 

मैं बहुत एप्लिकेशन प्रोग्रामिंग करने के लिए नया किसी की रूपरेखा तैयार कर सकते हैं मैं यह कैसे कर सकता हूँ? या मुझे एक लिंक भेजें जहां इसे समझाया गया है।

+0

आपका मतलब है कि इसे करना चाहिए [एनीमेशन सेट डिलीगेट: स्वयं]; ? लेख कहता है कि उसे कॉल करना है। –

+1

__ मुझे पता है कि 'CAAnimation' का' प्रतिनिधि 'मजबूत है, इसलिए चक्रों को बनाए रखने से बचने के लिए आपको इसे' शून्य 'पर सेट करने की आवश्यकता हो सकती है! __ –

उत्तर

38

लागू:

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag 
आपका प्रतिनिधि वस्तु पर

। आप कार्यान्वित भी कर सकते हैं:

- (void)animationDidStart:(CAAnimation *)theAnimation 

एनीमेशन शुरू होने पर कॉल प्राप्त करने के लिए। http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Reference/CAAnimation_class/Introduction/Introduction.html

+8

यह सही उत्तर है। किसी ने इसे वोट क्यों दिया, खासकर टिप्पणी के बिना? – thefaj

+0

फिर प्रलेखन का उपयोग 'एनीमेशनडिडस्टॉप: (एनएसएसटींग *) एनीमेशन आईडी का उपयोग करने के लिए क्यों करता है: (NSNumber *) ने पूरा किया: (void *)' setAnimationDidStopSelector विधि के लिए UIView क्लास रेफरेंस सेक्शन में? – CommaToast

0

बस की स्थापना

[UIView setAnimationDelegate:self]; 

एनीमेशन प्रतिनिधि तरीकों एनिमेशन कब प्रारंभ या समाप्त होता है की किसी भी फोन नहीं होगा:

अधिक जानकारी के लिए, के प्रतिनिधियों खंड देखें।

इस समस्या को निम्नलिखित में से किसी एक कार्य द्वारा हल किया जा सकता है।

1) अपने कार्यान्वयन खंड में जोड़ने

@implementation MyViewWithAnimations <UIApplicationDelegate> 


2) अपने एनीमेशन में शुरू-लिखें ब्लॉक

[UIView setAnimationWillStartSelector:@selector(animationDidStart:)]; 
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:)]; 


3 जोड़ने) क्या एप्पल का सुझाव करो और ब्लॉक का उपयोग इसके बजाय आधारित एनीमेशन विधियों।

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html

+0

कोई टिप्पणी छोड़ दिए बिना मतदान नीचे किसी को भी मदद नहीं करता है। – lindinax

+0

भले ही मैं एक डाउनवॉटिंग नहीं कर रहा हूं, मुझे यकीन है कि ऐसा इसलिए हुआ क्योंकि आप अपनी कक्षा में "यूआईपीप्लिकेशन डिलेगेट" जोड़ रहे हैं, भले ही इसका एनीमेशन के प्रतिनिधि से कोई लेना-देना नहीं है। –

4

कभी कभी toValue जब एनीमेशन पूरा करता है की आवश्यकता होती है करने के लिए अपने परत के वास्तविक मूल्य की स्थापना। जब यह एक जटिल जटिल एनीमेशन है जैसे कि कैग्रेडिएंट लेयर के रंग एनिमेट करना, यह आवश्यक है।

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag 
{ 
    self.gradientLayer.colors = (NSArray *)((CABasicAnimation*)theAnimation).toValue; 
} 
संबंधित मुद्दे