2010-09-06 98 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] 
}