为了账号安全,请及时绑定邮箱和手机立即绑定

用于推送UIViewController的自定义动画

用于推送UIViewController的自定义动画

胡子哥哥 2019-10-05 13:47:59
我想在按下视图控制器时显示自定义动画:我想实现类似“扩展”动画的功能,这意味着新视图将从给定的矩形扩展,例如在动画过程中将[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,我无法调整视图框架的大小……是吗?
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

您可以做的是推送下一个视图控制器,但不对其进行动画处理,如下所示:


[self.navigationController pushViewController:nextController animated:NO];

...然后,在推入的视图控制器中,您可以使用CoreAnimation对视图进行自定义动画。这可能是最好的viewDidAppear:(BOOL)animated方法。


查看有关如何实际制作动画的《核心动画指南》。特别要看一下隐式动画。


查看完整回答
反对 回复 2019-10-05
?
SMILET

TA贡献1796条经验 获得超4个赞

我使用以下功能(添加到中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];

}

我想您可以修改此代码以执行所需的任何动画。


查看完整回答
反对 回复 2019-10-05
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

您正在寻找的代码:


    [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];


查看完整回答
反对 回复 2019-10-05
  • 3 回答
  • 0 关注
  • 549 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信