如何做两个UIViewControllers之间的翻转animation,同时点击信息button?

我有一个名为“LoginViewController”的login页面。 我在这个页面有一个信息button。 如果我点击它,我想显示一些关于我的应用程序的信息。 我也想用翻页animation来呈现那个信息页面。

创build信息button的代码是,

infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; infoButton.frame = CGRectMake(285, 425, 30, 30); infoButton.backgroundColor = [UIColor clearColor]; [infoButton addTarget:self action:@selector(displayInfoView) forControlEvents:UIControlEventTouchUpInside]; 

如果我点击信息button, displayInfoView方法将被调用。 在那里我可以显示一个UIView来显示一些信息。 我对吗?

对于翻转animation,我使用这个代码…

 [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:.8]; [UIView setAnimationTransition:([loginPageView superview] ? UIViewAnimationTransitionFlipFromLeft : UIViewAnimationTransitionFlipFromRight) forView:mainView cache:YES]; if ([infoView superview]) { [infoView removeFromSuperview]; [mainView addSubview:loginPageView]; } else { [loginPageView removeFromSuperview]; [mainView addSubview:infoView]; } [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]; [UIView commitAnimations]; 

这里loginPageView是包含信息button的login视图。 infoView是包含应用程序信息的视图。 mainView是持有当前视图的常见视图。

现在我的问题是,而不是显示一个UIView ,我可以显示另一个视图控制器类,同时点击信息button? 记住翻转动作与UIView工作正常。 但是,当我尝试使用UIViewController ,这会造成麻烦。

有人可以build议我如何显示一个UIViewController(在我的应用程序,我需要显示AboutViewController ),同时点击信息button与翻转效果?

要翻到一个视图控制器:

 viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentViewController:viewController animated:YES completion:nil]; 

为了摆脱它:

 [self dismissViewControllerAnimated:YES completion:nil]; 

这是我如何做到这一点:

  AboutShowViewController *aboutShowViewController = [[AboutShowViewController alloc] initWithNibName:@"AboutShowViewController" bundle:[NSBundle mainBundle]]; [UIView beginAnimations:@"View Flip" context:nil]; [UIView setAnimationDuration:0.80]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; [self.navigationController pushViewController:aboutShowViewController animated:YES]; [UIView commitAnimations]; [aboutShowViewController release]; 

信贷在这里 faysar。

在理解Cocoa Touch中的MVC结构时存在一个根本的缺陷,那就是View ControllerViews是可比较的和相似的。 事实是,他们不是。

回到你的具体问题,是的,animation是基于视图,而不是视图控制器。 但是每个视图都应该由你的一个视图控制器来控制。 而这个视angular属于哪个控制器的东西完全取决于你。 在你的情况下,animation可能发生在2个视图和2个不同的控制器之间,或者也可能发生在同一个控制器的2个视图之间。

至于代码示例,我build议你看看Xcode默认模板之一的Utility应用程序 ,它以简洁和标准化的方式实现了这个点击和翻转animation。

简单的代码行

 YourViewController *city = [self.storyboard instantiateViewControllerWithIdentifier:@"YourViewController"]; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:.5]; [self.navigationController pushViewController:city animated:YES]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; [UIView commitAnimations];