2012-05-05 31 views
0

我有一个CABasicAnimation的viewWillAppear方法的“viewA”。 当我按下viewA中的按钮去viewB然后回到viewA viewWillAppear(of viewA)中的CABasicAnimation可以毫无问题地工作。CABasicAnimation不触发viewWillAppear

但是,当我从viewA切换到viewB,并在viewB中,我通过按下home按钮退出应用程序并返回到应用程序,viewAllViewA中的CABasicAnimation在按下后面后不会触发viewB中的按钮。

有趣的是,我也在viewWillAppear中有一个动画块,在这种情况下触发没有任何问题。所以viewWillAppear方法被触发,它只是CABasicAnimation在辞职和进入应用程序后第一次不起作用。

- (void) viewWillAppear:(BOOL)animated { 

CAMediaTimingFunction *customTimingFunction; 
    customTimingFunction=[CAMediaTimingFunction functionWithControlPoints: 0.5f :0.01f :0.1f : 1.f]; 

    CABasicAnimation *buttonAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation"]; 

    buttonAnimation.fromValue=[NSValue valueWithCGPoint:CGPointMake(0,-600)]; 
    buttonAnimation.toValue=[NSValue valueWithCGPoint:CGPointMake(0,0)]; 
    buttonAnimation.duration = 1; 
    buttonAnimation.removedOnCompletion = NO; 
    buttonAnimation.fillMode = kCAFillModeForwards; 
    buttonAnimation.timingFunction = customTimingFunction; 
    [button.layer addAnimation:buttonAnimation forKey:@"transform.translation"]; 

} 
+0

一个解决方案,我发现是把在viewDidAppear的代码。然而,我认为动画触发的时间稍晚一点,因为它在viewDidAppear方法中。理想情况下,我希望它在viewWillAppear。 –

回答

3

我找到了解决方案。如果我change buttonAnimation.removedOnCompletion = NO;change buttonAnimation.removedOnCompletion = YES;它会每次触发。即使在辞职并进入应用程序后。