脉冲动画

时间:2010-09-06 16:52:18

标签: iphone animation uitabbarcontroller

我想在简单的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上运行的解决方法?

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分:1)

仅在视图第一次加载时调用ViewDidLoad。由于视图在切换视图时不会立即释放,因为它仍然存在,因此当您返回视图时,不会再次调用viewdidLoad。

尝试调用[self doCoolAnimation];在viewDidAppear中。每次都会调用它。

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