如何做两个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 Controller和Views是可比较的和相似的。 事实是,他们不是。
回到你的具体问题,是的,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];