2012-05-05 5 views
0

У меня есть CABasicAnimation в viewWillAppear метод "viewA". , когда я нажимаю кнопку в viewA, чтобы перейти к viewB, а затем вернуться к viewA CABasicAnimation в viewWillAppear (ofA) работает без проблем.CABasicAnimation не запускается в viewWillAppear

но, когда я перехожу из viewA к viewB, и в видуB Я ухожу из приложения, нажав кнопку «домой» и вернусь обратно в приложение, CABasicAnimation in viewWillAppear viewA не запускается после того, как я нажал кнопку назад кнопка в видеB.

Самое забавное, что у меня также есть блок анимации в 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;, он будет запускаться каждый раз. даже после увольнения и входа в приложение.

0

У меня есть тот же случай, анимация не начинается. Используя код отсюда: https://github.com/akaabe/HamburgerButton/blob/master/HamburBtn.m и вызов в видеDidAppear toggleAnimation. Единственный случай, который работает для меня, - использовать функцию performSelector с задержкой.

+0

Изменено для modelLayer в applyCustomAnimation и помогает – Dimitrio