UIButton动画在返回App时停止了吗?

时间:2014-03-20 06:08:52

标签: ios objective-c uibutton cabasicanimation

我在menuViewController的viewDidLoad&中调用了以下方法。 viewDidAppear,当应用程序加载我的主视图时,为我的按钮提供脉冲效果。

-(void) pulseButton {
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;
[menuButton.layer addAnimation:pulseAnimation forKey:nil];
}

当我第一次加载应用程序时,它会完美地发出脉冲。当我离开应用程序并立即返回时,为什么它会停止动画?

更新

我在我的viewDidAppear方法中添加了一个NSLog,我意识到它没有被调用。我正在显示的视图是一个子视图,我通过以下方式添加到主控制器的viewDidLoad中:

MenuViewController *MVC = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];
[self.view addSubview:MVC.view];
[self addChildViewController:MVC];
[MVC didMoveToParentViewController:self];

这可能是为什么没有调用viewDidAppear的问题,因此我的方法没有被调用?

2 个答案:

答案 0 :(得分:1)

您只需使用NSNotificationCenter即可实现此目标

viewDidLoad

- (void)viewDidLoad
{
    //YOUR_STUFF

    [[NSNotificationCenter defaultCenter]addObserver:self
                                            selector:@selector(pulseButton)
                                                name:UIApplicationDidBecomeActiveNotification
                                              object:nil];

}

** 当视图不可见时,CALayer动画会自动删除

答案 1 :(得分:1)

将视图添加为子视图不会调用其didAppear方法。您应该在viewDidLoad中执行这些操作。