मैं अपने आईफोन एप्लिकेशन में एक परत की किसी प्रकार की एनीमेशन करने की कोशिश कर रहा हूं। इससे कोई फर्क नहीं पड़ता कि मैं क्या करता हूं मुझे हमेशा एक ही परिणाम मिलते हैं: एनीमेशन के बाद यह वापस अपनी मूल स्थिति में झटके देता है। भले ही मैंने 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"];
धन्यवाद फ्रैंक श्मिट! आप आदमी हो। AnimationGroup.fillMode = kCAFillModeForwards; कुंजी थी यदि आप स्टॉकहोम द्वारा आते हैं तो मैं आपको एक कॉफी देता हूं। =) – ABeanSits