Iphone 从导航堆栈中弹出视图控制器时从右侧滑入

Iphone 从导航堆栈中弹出视图控制器时从右侧滑入,iphone,ios,Iphone,Ios,现在,当我从导航控制器堆栈中弹出一个自定义视图控制器(带有动画:是)时,它会像往常一样向右滑动。我想让动画看起来与按下控制器(从右侧滑入)时一样,但仍然具有弹出效果而不是按下效果。我应该如何开始我的探索?是否应该在视图中执行此操作?我曾经制作过一个视图的自定义动画,与此类似。至于开始,我会调查。苹果的文档中可能有比这更好的匹配,符合你的需求 基本上,您可以将viewDidLoad中的帧设置为屏幕外。然后在viewdide中,将帧设置为结束帧,但将其包装在以下代码中: [UIView beginA

现在,当我从导航控制器堆栈中弹出一个自定义视图控制器(带有动画:是)时,它会像往常一样向右滑动。我想让动画看起来与按下控制器(从右侧滑入)时一样,但仍然具有弹出效果而不是按下效果。我应该如何开始我的探索?是否应该在视图中执行此操作?

我曾经制作过一个视图的自定义动画,与此类似。至于开始,我会调查。苹果的文档中可能有比这更好的匹配,符合你的需求

基本上,您可以将
viewDidLoad
中的帧设置为屏幕外。然后在
viewdide
中,将帧设置为结束帧,但将其包装在以下代码中:

[UIView beginAnimations:@"animationsNameThisCanBeAnythingOrNil" context:nil]
//Reset the frame here
[UIView commitAnimations];

我希望这有帮助

我曾经做过一个视图的自定义动画,与此类似。至于开始,我会调查。苹果的文档中可能有比这更好的匹配,符合你的需求

基本上,您可以将
viewDidLoad
中的帧设置为屏幕外。然后在
viewdide
中,将帧设置为结束帧,但将其包装在以下代码中:

[UIView beginAnimations:@"animationsNameThisCanBeAnythingOrNil" context:nil]
//Reset the frame here
[UIView commitAnimations];

我希望这有帮助

为了以防万一,这是我用来完成要求的代码:

CATransition *animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromRight];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
[[self.navigationController.view layer] addAnimation:animation forKey:nil];
[self.navigationController popViewControllerAnimated:NO];

您可能需要确保弹出的基础UIView具有清晰的背景,否则在弹出时,您会看到旧的UIView在滑动时变为白色。

为了防止它对某人有所帮助,我使用以下代码来完成要求:

CATransition *animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromRight];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
[[self.navigationController.view layer] addAnimation:animation forKey:nil];
[self.navigationController popViewControllerAnimated:NO];
您可能希望确保从中弹出的基础UIView具有清晰的背景,否则当您弹出时,您将看到旧UIView在滑动时逐渐变为白色