Пульсирующая анимация - PullRequest
       2

Пульсирующая анимация

5 голосов
/ 06 сентября 2010

Я хочу построить пульсирующую анимацию на простом UIImageView.ImageView станет немного больше, а затем вернется к своему первоначальному размеру.

Я использовал следующий код:

- (void) doCoolAnimation {
    [UIView beginAnimations:@"glowingAnimation" context:nil];
    [UIView setAnimationRepeatAutoreverses:YES];
    [UIView setAnimationRepeatCount:INT_MAX];
    [UIView setAnimationDuration:0.25];
    [UIView setAnimationBeginsFromCurrentState:YES];
    imageView.transform = CGAffineTransformMakeScale(1.15, 1.15);
    [UIView commitAnimations];
}

Это прекрасно работает на iOS3, но работает только частично на iOS4.

У меня есть UITabBarController с двумя представлениями.Первый - это imageView с анимацией, и анимация запускается, как только загружается представление.Но после того, как я переключился на второй вид (используя TabBar) и вернулся, анимация больше не работает на iOS4.(Но на iOS3 я могу переключаться между этими двумя видами, и анимация по-прежнему работает нормально.)

Я также пробовал с таймером, который вызывает doCoolAnimation каждую секунду, но это не помогает снова запустить анимацию.

Может кто-нибудь объяснить, почему после переключения вида анимация пропала?Есть ли обходной путь, который может заставить его работать на iOS4?

Ответы [ 2 ]

9 голосов
/ 30 июля 2012

Используйте этот простой метод: -

CABasicAnimation *pulseAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
pulseAnimation.duration = .5;
pulseAnimation.toValue = [NSNumber numberWithFloat:1.1];
pulseAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
pulseAnimation.autoreverses = YES;
pulseAnimation.repeatCount = FLT_MAX;
[ButtonName.layer addAnimation:pulseAnimation forKey:nil];
1 голос
/ 08 декабря 2010

ViewDidLoad вызывается только при первой загрузке представления. Поскольку представление не освобождается сразу при переключении представлений, поскольку оно все еще существует, viewdidLoad больше не вызывается при возвращении в представление.

Попробуйте вызвать [self doCoolAnimation]; в viewDidAppear. Это вызывается каждый раз.

- (void)viewDidAppear:(BOOL)animated {
    [self doCoolAnimation]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...