2009-12-08 4 views
5

Я пытаюсь выполнить какую-то анимацию слоя в приложении для iPhone. Неважно, что я делаю, я всегда получаю одинаковые результаты: после того, как анимация завершена, она возвращается в исходное положение. Даже если я установил removedOnCompletion в false, нет никакой разницы.Каким образом преобразование Core Animation всегда возвращается в исходное состояние?

Что мне здесь не хватает?

Заранее благодарен!

EDIT: На самом деле нужна помощь с помощью этого парня. Я создаю анимацию с объектами 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 кажется, что он был с аналогичной проблемой.

Возможно, вам придется установить свойство слоя transform, пока анимация работает до transformLeafToRotation.

Удачи вам!

+0

Большое спасибо Фрэнк Шмитт! Ты мужчина. theAnimationGroup.fillMode = kCAFillModeForwards; Был ключ. Если вы приедете в Стокгольме, я должен вам кофе. знак равно – ABeanSits

Смежные вопросы