自定义动画为推进一个UIViewController(Custom Animation for Pu

2019-07-17 15:29发布

我想推一个视图控制器时显示自定义动画:我想实现类似的“扩大”的动画,这意味着新的观点从一个给定的矩形扩展,可以说[100,100 220380]动画为全屏时。

任何建议从哪里开始,分别的任何文档,教程,链接? :)


好的。 我可以使扩大与下面的代码动画:

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秒,更新视图的变换。 不幸的是,推时UIViewController ,我不能够调整视图的框架......我是谁?

Answer 1:

你可以做的就是推动下一个视图控制器,但没有设置动画,就像这样:

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

......然后,在所得到推在视图控制器,你可以做一个自定义动画的它的视图中使用CoreAnimation。 这可能会在来最好的做法viewDidAppear:(BOOL)animated方法。

退房的核心动画指南对如何真正做到动画。 看看尤其是在暗示动画。

编辑: 更新的链接



Answer 2:

我使用下面的函数(加入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];
}

我想你可以适应这个代码做任何你想要的动画。



Answer 3:

您正在寻找的代码:

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


Answer 4:

海因里希,

我已经做了YouTube的教程显示如何让意见膨胀和收缩,就像在Facebook的iPhone应用程序。

希望它可以帮助: 如何在iPhone上SDK扩大/缩小意见

亚当



Answer 5:

@zoul:那真是棒极了! 我只是改变了“自我”到“self.navigationController”和“self.view”到“self.navigationController.view”不知道,如果这是必要的,但它的工作。 和@crafterm,作为弹出回来,只是让自己leftBarButtonItem通过增加viewDidLoad中或viewWillAppear中这样的代码:

//add your own left bar button
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonTapped)];
self.navigationItem.leftBarButtonItem = backButton;
[backButton release];

然后,我只是调整了推送功能和使这个popWithTransition功能,我在我的-backButtonTapped方法调用。

- (void) popWithTransition: (UIViewAnimationTransition) transition
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:.75];
    [UIView setAnimationBeginsFromCurrentState:YES];        
    [UIView setAnimationTransition:transition forView:self.navigationController.view cache:YES];
    [UIView commitAnimations];
[self.navigationController popViewControllerAnimated:NO];
}

需要注意的是popViewController调用获得下移到结束,动画之后。 不知道这是犹太,但同样,它的工作。



Answer 6:

你想要的是第2章的下载iPhone开发者的食谱 。 看看具体的affineRotate样品,但任何核心animatin样本将帮助你。



Answer 7:

看一看ADTransitionController ,在更换下降为UINavigationController的自定义过渡动画(其API的UINavigationController的API相匹配),我们在创建Applidium团队。

您可以使用不同的预先定义动画的pushpop操作,如刷卡褪色魔方卡罗素等。 在你的情况,你所请求的动画是一个叫变焦



文章来源: Custom Animation for Pushing a UIViewController