CAKeyFrameAnimation не повторяется

Привет, у меня есть шкала CAKeyFrameAnimation, которая заставляет объект уменьшаться от полного размера (1) почти до нуля (0,01).

Тогда это называется:

- (void)animationDidStop:(CAKeyframeAnimation *)anim finished:(BOOL)flag
{

 [self setHidden:YES];

}

Кажется, что он скрывает объект, но не раньше, чем он снова появляется в полном размере на долю секунды, что разрушает эффект затухания до малого / ничего: P

Как остановить анимацию от возврата к кадру 1 для вызова «animationDidStop»? Спасибо!


person SW_Cali    schedule 30.12.2011    source источник


Ответы (2)


Я считаю, что вам нужно установить свойство fillMode ваших анимаций на kCAFillModeForwards. Это должно заморозить анимацию в момент ее окончания.

Другое предложение (и, честно говоря, я обычно так и делаю) — просто установить свойства самого слоя в их окончательное положение после того, как вы настроили анимацию. Таким образом, когда анимация будет удалена, слой по-прежнему будет иметь окончательные свойства как часть своей модели.

person Srikar Appalaraju    schedule 30.12.2011
comment
Спасибо, я использовал: popAnimation.fillMode = kCAFillModeForwards; popAnimation.removedOnCompletion = НЕТ; Это остановило анимацию в конце. - person SW_Cali; 07.02.2012

  1. Вы можете установить свойство объекта .scale вместо CAKeyframeAnimation.
  2. Вы можете отключить анимацию и установить целевой масштаб после создания CAKeyframeAnimation.
  3. Вы можете установить масштаб (0,1) в методе animationDidStop (не уверен, что это сработает)

Суть в том, чтобы задать целевые свойства объекта. Он прыгает к ним после окончания анимации.

person bealex    schedule 30.12.2011