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