2012-05-05 53 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;它會每次觸發。即使在辭職並進入應用程序後。