-3

我正在开发一个基于导航的应用程序。在这个应用程序中,我想要一些 Push Pop 的特殊动画。

我想要 currentViewController 的 MoveOut 动画和 nextViewController 的 FadeIn 动画。

我使用了以下代码。firstViewController 的 MoveOut 动画效果很好。但我无法获得 nextViewController 的 FadeIn 动画。

- (IBAction)pushClick:(id)sender
{
    SecondViewController * sec = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

    CATransition *transitionMainView = [CATransition animation];
    transitionMainView.duration = 0.4;
    transitionMainView.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transitionMainView.type = kCATransitionReveal;
    transitionMainView.subtype = kCATransitionFromRight;
    transitionMainView.delegate = self;
    [self.navigationController.view.layer addAnimation:transitionMainView forKey:nil];

    CATransition *transitionSubView = [CATransition animation];
    transitionSubView.duration = 0.4;
    transitionSubView.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transitionSubView.type = kCATransitionFade;
    transitionSubView.subtype = kCATransitionFromLeft;
    transitionSubView.delegate = self;
    [sec.view.layer addAnimation:transitionSubView forKey:nil];

    [self.navigationController pushViewController:sec animated:NO];
}

请告诉我 POP 的解决方案......

请分享你的知识......

4

1 回答 1

0

你应该使用下面的代码!

SecondViewController * sec = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

   CATransition *transitionMainView = [CATransition animation];
   transitionMainView.duration = 0.4;
   transitionMainView.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
   transitionMainView.type = kCATransitionReveal;
   transitionMainView.subtype = kCATransitionFromRight;
   transitionMainView.delegate = self;
   [self.navigationController.view.layer addAnimation:transitionMainView forKey:nil];
   [self.navigationController pushViewController:sec animated:NO];
   sec.view.alpha = 0;

   [UIView beginAnimations:@"animation" context:nil];
   [UIView setAnimationDuration:0.75];
   sec.view.alpha = 1;
   [UIView commitAnimations];
于 2013-05-11T07:19:20.620 回答