用于推送UIViewController的自定义动画

我想在按下视图控制器时显示自定义动画:我想实现类似“扩展”动画的功能,这意味着新视图将从给定的矩形扩展,例如在动画过程中将[100,100 220,380]扩展到全屏。


任何从何处开始的建议,或者任何文档,教程,链接?:)


好的。我可以使用以下代码制作扩展动画:


if ([coming.view superview] == nil)   

    [self.view addSubview:coming.view];

    coming.view.frame = CGRectMake(160,160,0,0);

    [UIView beginAnimations:@"frame" context:nil];

    [UIView setAnimationDuration:4];

    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

    [coming viewWillAppear:YES];

    [going viewWillAppear:YES];

    coming.view.frame = CGRectMake(0, 0, 320, 480);

    [going viewDidDisappear:YES];

    [coming viewDidAppear:YES];

    [UIView commitAnimations];

我的视图已正确显示,但是不幸的是导航栏未更新。有手动方法吗?


在示例代码中,该函数被全部调用0.03秒,以更新视图的转换。不幸的是,当按下a时UIViewController,我无法调整视图框架的大小……是吗?


胡子哥哥
浏览 554回答 3
3回答

至尊宝的传说

您可以做的是推送下一个视图控制器,但不对其进行动画处理,如下所示:[self.navigationController pushViewController:nextController animated:NO];...然后,在推入的视图控制器中,您可以使用CoreAnimation对视图进行自定义动画。这可能是最好的viewDidAppear:(BOOL)animated方法。查看有关如何实际制作动画的《核心动画指南》。特别要看一下隐式动画。

SMILET

我使用以下功能(添加到中UINavigationController)自定义推送动画:- (void) pushController: (UIViewController*) controller         withTransition: (UIViewAnimationTransition) transition{    [UIView beginAnimations:nil context:NULL];    [self pushViewController:controller animated:NO];    [UIView setAnimationDuration:.5];    [UIView setAnimationBeginsFromCurrentState:YES];            [UIView setAnimationTransition:transition forView:self.view cache:YES];    [UIView commitAnimations];}我想您可以修改此代码以执行所需的任何动画。

芜湖不芜

您正在寻找的代码:    [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:menu animated:YES];[UIView commitAnimations];
打开App,查看更多内容
随时随地看视频慕课网APP