Слоевая анимация работает нормально в первый раз, но не при втором идентичном вызове - PullRequest
1 голос
/ 13 сентября 2010

У меня есть анимация, которая отлично работает при первом вызове.Но если я хочу снова анимировать тот же слой, используя тот же код, он немедленно завершается, и animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag вызывается для делегата со значением flag NO.

Вот кодэто добавляет анимацию:

  imageView.hidden = NO;

  CAKeyframeAnimation* animationOpacity = 
    [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
  ...

  animationOpacity.duration = 2.0;
  animationOpacity.removedOnCompletion = YES;
  animationOpacity.delegate = self;

  [imageView.layer addAnimation:animationOpacity forKey:@"someKey"]; 

, и это действие делегата:

-(void) animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag {
   imageView.hidden = YES;
}

Кстати, изначально imageView видим в XIB.

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Оказывается комбинацией установки view.hidden = YES в обратном вызове и вызова кода анимации из родительского viewWillApear. Как только я переместил вызов кода анимации в родительский viewDidApear, все стало работать как ожидалось.

0 голосов
/ 13 сентября 2010

Вы добавляете анимацию еще раз, прежде чем вызывать ее во второй раз? Если вы этого не сделаете, вы должны установить removeOnCompletion = NO

animationOpacity.removedOnCompletion = NO;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...