2009-12-08 6 views
5

मैं अपने आईफोन एप्लिकेशन में एक परत की किसी प्रकार की एनीमेशन करने की कोशिश कर रहा हूं। इससे कोई फर्क नहीं पड़ता कि मैं क्या करता हूं मुझे हमेशा एक ही परिणाम मिलते हैं: एनीमेशन के बाद यह वापस अपनी मूल स्थिति में झटके देता है। भले ही मैंने removedOnCompletion को गलत पर सेट किया है, इसमें कोई फर्क नहीं पड़ता है।मेरा कोर एनीमेशन परिवर्तन हमेशा इसके प्रारंभ-राज्य में कैसे आता है?

मुझे यहां क्या याद आ रही है?

अग्रिम धन्यवाद!

संपादित करें: वास्तव में इस लड़के के साथ मदद की ज़रूरत है। मैं CAKeyframeAnimation और CABasicAnimation ऑब्जेक्ट्स के साथ एनिमेशन बना रहा हूं, फिर उन्हें CAAnimationGroup में जोड़ रहा हूं, जिसे मैं परत में बदल देता हूं। एनीमेशन भविष्यवाणी के रूप में काम करता है सिवाय इसके कि यह हमेशा इसके मूल स्थिति पर वापस आ जाता है। यह मामला है, भले ही मैंने सभी एनीमेशन-ऑब्जेक्ट्स और एनीमेशन समूह पर removedOnCompletion = NO; सेट किया हो।

कोई मुझे सही दिशा में इंगित करता है! मैं स्टॉकहोम क्षेत्र में रहता हूं मैं आपको एक कॉफी खरीदूंगा। =) न्यू कोड के नीचे तैनात:

CABasicAnimation *leveloutLeafAnimation = [CABasicAnimation animationWithKeyPath:@"transform"]; 
leveloutLeafAnimation.removedOnCompletion = NO; 
leveloutLeafAnimation.duration = 1.0; 
leveloutLeafAnimation.repeatDuration = 20; 
CATransform3D transformLeafToRotation = CATransform3DMakeRotation(0.0, 0.0, 0.0, 1); 
CATransform3D transformLeafFromRotation = CATransform3DMakeRotation([self _degreesToRadians:270.0], 0.0, 0.0, 1); 
leveloutLeafAnimation.fromValue = [NSValue valueWithCATransform3D:transformLeafFromRotation]; 
leveloutLeafAnimation.toValue = [NSValue valueWithCATransform3D:transformLeafToRotation]; 

//Create an animation group to combine the animations. 
CAAnimationGroup *theAnimationGroup = [CAAnimationGroup animation]; 

//The animationgroup conf. 
theAnimationGroup.delegate = self; 
theAnimationGroup.duration = animationDuration; 
theAnimationGroup.removedOnCompletion = NO; 
theAnimationGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
theAnimationGroup.animations = [NSArray arrayWithObjects:leveloutLeafAnimation, leafMoveAnimation, nil]; 

// Add the animation group to the leaf layer. 
[leafViewLayer addAnimation:theAnimationGroup forKey:@"animatLeafFalling"]; 

उत्तर

3

अगर यह उपयोगी है सुनिश्चित नहीं हैं, लेकिन this guy जैसे वह एक ऐसी ही समस्या हो रही थी लगता है।

एनीमेशन transformLeafToRotation पर चल रहा है, जबकि आपको परत की transform सेट करना पड़ सकता है।

शुभकामनाएं!

+0

धन्यवाद फ्रैंक श्मिट! आप आदमी हो। AnimationGroup.fillMode = kCAFillModeForwards; कुंजी थी यदि आप स्टॉकहोम द्वारा आते हैं तो मैं आपको एक कॉफी देता हूं। =) – ABeanSits