Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 更改推送ViewController动画,使其看起来像一个;“流行音乐”;动画,从左到右进入_Iphone_Ios_Objective C_Uistoryboard_Uiviewanimationtransition - Fatal编程技术网

Iphone 更改推送ViewController动画,使其看起来像一个;“流行音乐”;动画,从左到右进入

Iphone 更改推送ViewController动画,使其看起来像一个;“流行音乐”;动画,从左到右进入,iphone,ios,objective-c,uistoryboard,uiviewanimationtransition,Iphone,Ios,Objective C,Uistoryboard,Uiviewanimationtransition,现在我正在使用序列图像板中的一段来推送视图控制器,只有一次推送转换。如何在代码中模仿“Pop”转换?我现在还可以使用故事板进行其他转换吗 更新 我尝试了第一条评论中的建议,做了一些修改。以下是我所拥有的: UIViewController *dst = [self destinationViewController]; UIViewController *src = [self sourceViewController]; [dst viewWillAppear:YES]; [dst viewD

现在我正在使用序列图像板中的一段来推送视图控制器,只有一次推送转换。如何在代码中模仿“Pop”转换?我现在还可以使用故事板进行其他转换吗

更新

我尝试了第一条评论中的建议,做了一些修改。以下是我所拥有的:

UIViewController *dst = [self destinationViewController];
UIViewController *src = [self sourceViewController];
[dst viewWillAppear:YES];
[dst viewDidAppear:NO];

CGRect screenBounds = [[UIScreen mainScreen] bounds];
CGRect f = CGRectMake(-screenBounds.size.width, 0, screenBounds.size.width, screenBounds.size.height);
dst.view.frame = f;
f.origin.x = screenBounds.size.width;
src.view.frame = f;

[UIView transitionFromView:src.view
                    toView:dst.view
                  duration:0.3
                   options:UIViewAnimationOptionTransitionNone
                completion:^(BOOL finished){
     [dst viewDidAppear:YES];

     UINavigationController *nav = src.navigationController;
     [nav popViewControllerAnimated:NO];
     [nav pushViewController:dst animated:NO];
 }];
这几乎是我想要的工作方式,但原始的viewcontroller只是消失而不是向右滑动。

您可以在stroyboard上创建Segue类型“Custom”,并在popSegue.m文件中创建一个名为“popSegue”的新的
UIStoryboardSegue
类添加以下内容:

    -(void)perform{
UIViewController *sourceViewContreoller = [self sourceViewController];

CATransition *animation = [CATransition animation];
[animation setType:kCATransitionFromLeft]; //or kCATransitionFromRight 
[animation setDuration:0.25];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:
                              kCAMediaTimingFunctionEaseIn]];

[sourceViewContreoller.navigationController.view.layer addAnimation:animation forKey:@"animateOpacity"]; //or key=@"fadeTransition"

[sourceViewContreoller.navigationController popViewControllerAnimated:YES];

[CATransaction commit];
}
在情节提要编辑器中,选择segue并将segue类更改为“popSegue”。 将标识符设置为“popSegue”。
尝试此操作并对结果进行注释

您将不得不使用自定义动画,我实际上想要推送视图,但要使用pop的转换。因此,推送视图将从左向右。对不起,在描述中,我是指从左到右,只是做了一个改变。这只是弹出导航控制器。我想推一个视图控制器,但使转换看起来像是弹出的。