2010-09-06 14 views
5

Basit bir UIImageView üzerinde titreşimli bir animasyon oluşturmak istiyorum. ImageView biraz daha büyüyecek, ardından orijinal boyutuna geri dönecek.Darbeli Animasyon

- (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]; 
} 

Bu iOS3 üzerinde çalışıyor ancak iOS4 üzerinde sadece kısmen çalışır:

ben aşağıdaki kodu kullandım.

İçinde 2 adet görüntü bulunan bir UITabBarController var. Birincisi, animasyonlu imageView ve görüntü yüklendiğinde animasyon başlar. Ancak ikinci görünüme geçtikten sonra (TabBar'ı kullanarak) ve geri döndüğümde, artık iOS4'te animasyon çalışmıyor. (Ancak, iOS3'te bu 2 görünüm arasında geçiş yapabilirim ve animasyon hala iyi çalışıyor.)

Ayrıca, her saniye doCoolAnimation öğesini çağıran bir zamanlayıcı ile çalıştım, ancak bu, animasyonu yeniden başlatmaya yardımcı olmuyor.

Birisi, görüntüyü değiştirdikten sonra neden animasyonun geçtiğini açıklayabilir mi? IOS4'te çalışmasını sağlayabilecek bir geçici çözüm var mı?

cevap

9

kullanın bu basit yöntemi: -

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]; 
+0

Gerçekten cool! Ayrıca zaten herhangi bir animasyon olup olmadığını kontrol etmek için var mı? – Mithuzz

1

ViewDidLoad yalnızca görünüm ilk kez yüklendiğinde çağrılır. Görünümü değiştirdiğinizde görünüm devre dışı bırakılmadığı için görünümde geri döndüğünüzde viewdidLoad yeniden çağrılmaz.

Arama yapmayı deneyin [self doCoolAnimation]; viewDidAppear'da. Bu her zaman denir.

- (void)viewDidAppear:(BOOL)animated { 
    [self doCoolAnimation] 
}