单击信息按钮时如何在两个UIViewControllers之间进行翻转动画?

36 flip uiviewcontroller uiview ios

我有一个名为"LoginViewController"的登录页面.我在这个页面上有一个信息按钮.如果我点击它,我想显示一些关于我的应用程序的信息.此外,我想使用翻转动画呈现该信息页面.

创建信息按钮的代码是,

infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
infoButton.frame = CGRectMake(285, 425, 30, 30);
infoButton.backgroundColor = [UIColor clearColor];

[infoButton addTarget:self 
            action:@selector(displayInfoView) 
            forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

如果单击"信息"按钮,displayInfoView将调用该方法.在那里我可以显示一个UIView显示一些信息.我对吗?

对于翻转动画,我使用了这段代码......

[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];
Run Code Online (Sandbox Code Playgroud)

loginPageView是包含信息按钮的登录视图.infoView是包含有关应用程序的信息的视图.mainView是持有本观点的共同观点.

现在我的问题是,我UIView可以在点击信息按钮时显示另一个视图控制器类,而不是显示一个吗?请记住,翻转动作可以正常使用UIView.但是,当我尝试使用时UIViewController,这会给你带来麻烦.

有人可以建议我如何显示一个UIViewController(在我的应用程序中,我需要显示AboutViewController),同时单击带有翻转效果的信息按钮?

Fil*_*lic 127

要翻转到视图控制器:

viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:viewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

要翻出来:

[self dismissViewControllerAnimated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)


Mic*_*son 21

这就是我这样做的方式:

 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];
Run Code Online (Sandbox Code Playgroud)

这里归功于faysar .

  • 因为Michael的版本无需翻转UITabBar即可使用。谁问过模态视图控制器? (2认同)

Di *_* Wu 5

您对Cocoa Touch中MVC结构的理解存在根本缺陷,即视图控制器视图具有可比性和相似性.事实是,他们不是.

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

至于代码示例,我建议你看一下Xcode的默认模板之一,即Utility Application,它以简洁和标准化的方式实现了这个点击动作动画.