从上到下查看控制器动画

时间:2014-08-05 09:50:44

标签: ios objective-c animation uiviewcontroller

我正在iOS开发电子商务移动应用程序。我需要知道如何使用幻灯片动画从上到下从UIViewController移动到另一个UIViewController

我正在使用Storyboard。 应用程序需要在ios6和ios7中运行。 以下是我用于转发UIViewController

的代码
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
MenuViewController *viewController = 
 (MenuViewController *)
   [storyboard instantiateViewControllerWithIdentifier:@"menupage"];
[self.navigationController pushViewController:viewController animated:NO];

下面是我为翻页效果尝试的代码,它工作正常。从上到下滑动我需要和下面相同的东西

[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp
                   forView:self.navigationController.view cache:NO];
[self.navigationController pushViewController:viewController animated:YES];
[UIView commitAnimations];

另一种方法

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
       MenuViewController *viewController = (MenuViewController *)[storyboard instantiateViewControllerWithIdentifier:@"menupage"];
          MenuViewController *viewController1 = (MenuViewController *)[storyboard instantiateViewControllerWithIdentifier:@"menupage"];

[self.view addSubview:viewController.view];
          viewController.view.frame=CGRectMake(0,480,320,480);
          [UIView animateWithDuration:1
                           animations:^{
                               viewController.view.frame=CGRectMake(0,0,320,480);

                           }
                           completion:^(BOOL fin){
                               if (fin)
                               {
                                [self.navigationController pushViewController:viewController animated:NO];
                                   [self.navigationController pushViewController:viewController1 animated:NO];
                               }
                           }];

这里我以成功的方式获得动画。但是我需要加载两次相同的视图控制器。一个用于动画,另一个用于正常的ViewController Load.If我没有加载第二个方法我在nextviewController按钮操作中遇到了一些问题。 提前致谢 Sam.P

2 个答案:

答案 0 :(得分:1)

[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp
               forView:self.navigationController.view cache:NO];

而不是使用UIViewAnimationTransitionCurlUp使用UIViewAnimationCoverVertical

或者根本没有任何视图动画,只需更改一行。

[self.navigationController presentViewController:viewController animated:YES completion:NULL];

答案 1 :(得分:0)

FYI @MaheThiru推送只能让你来回转换,推送你需要导航控制器。其他过渡如coververtical,pagecurl,crossdissolve和fliphorizo​​ntal由模态转换(没有导航控制器)提供,我们写作

[self presentViewController:viewController animated:YES completion:NULL]; 

我在这里写了一个小小的疑问

 animated:NO 

将其更改为

animated:YES 

也许它会解决问题。尝试一次。

快乐编码