2010-09-06 141 views
5

我想在簡單的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在其中有2個視圖。第一個是帶有動畫的imageView,並且動畫在視圖加載後立即開始。但是在切換到第二個視圖(使用TabBar)後,動畫在iOS4上不再運行。 (但在iOS3上,我可以在這兩個視圖之間切換,並且動畫仍然可以正常工作。)

我也嘗試了一個每秒調用一次doCoolAnimation的計時器,但這並不能幫助再次啓動動畫。

有人可以解釋爲什麼在視圖切換後動畫不見了嗎?有沒有可以使其在iOS4上運行的解決方法?

回答

9

使用這種簡單的方法: -

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

這是真的很酷!無論如何,還有檢查是否有任何動畫已經發生? – Mithuzz 2013-01-25 05:25:09

1

ViewDidLoad僅在第一次加載視圖時調用。由於視圖在切換視圖時沒有立即釋放,因爲它仍然存在,所以當您返回視圖時,不會再次調用viewdidLoad。

嘗試調用[self doCoolAnimation];在viewDidAppear。這被稱爲每次。

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