推送动画 - 我希望在当前的视图和下一个视图中使用两种不同的动画 - 在iPhone中

时间:2013-05-11 06:53:41

标签: iphone ios objective-c animation caanimation

我正在开发基于导航的应用程序。在这个应用程序中,我想要一些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的解决方案.......

请分享您的知识.....

1 个答案:

答案 0 :(得分: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];
相关问题