Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Ios 是否用动画替换根视图控制器自定义序列?_Ios_Objective C_Storyboard_Segue_Uistoryboardsegue - Fatal编程技术网

Ios 是否用动画替换根视图控制器自定义序列?

Ios 是否用动画替换根视图控制器自定义序列?,ios,objective-c,storyboard,segue,uistoryboardsegue,Ios,Objective C,Storyboard,Segue,Uistoryboardsegue,我有一个自定义的UIStoryboardSegue子类,它只是用目标VC替换根视图控制器。工作完全符合我的要求。。。然而,我希望能够添加一个过渡动画,我找不到任何好的例子来说明如何在替换根VC的上下文中这样做 我的类的-perform选择器如下所示: -(void)perform { UIViewController *source = (UIViewController *)self.sourceViewController; source.view.window.rootVi

我有一个自定义的
UIStoryboardSegue
子类,它只是用目标VC替换根视图控制器。工作完全符合我的要求。。。然而,我希望能够添加一个过渡动画,我找不到任何好的例子来说明如何在替换根VC的上下文中这样做

我的类的-perform选择器如下所示:

-(void)perform {
    UIViewController *source = (UIViewController *)self.sourceViewController;
    source.view.window.rootViewController = self.destinationViewController;
}

…如何添加漂亮的动画过渡?

有许多方法可以添加“漂亮的动画”。下面是一种卡片洗牌动画的示例,其中一个视图向上和向左移动,而另一个视图向下和向右移动,然后在更改两个视图的z顺序后反转。此实现将目标控制器的视图插入源控制器视图下的窗口视图层次结构中

 -(void)perform {
    CGFloat dur = 1.0;
    UIView *destView = [self.destinationViewController view];
    UIView *srcView = [self.sourceViewController view];
    CGFloat viewWidth = srcView.frame.size.width;
    CGPoint center = srcView.center;
    AppDelegate *appDel = [[UIApplication sharedApplication] delegate];
    destView.frame = srcView.bounds;
    [appDel.window insertSubview:destView belowSubview:srcView];

    [UIView animateWithDuration:dur animations:^{
        srcView.frame = CGRectOffset(srcView.frame, -viewWidth/1.9, -20);
        destView.frame = CGRectOffset(destView.frame, viewWidth/1.9, 20); 
    } completion:^(BOOL finished) {
        [appDel.window bringSubviewToFront:destView];
        [UIView animateWithDuration:dur animations:^{
            destView.center = center;
            srcView.center = center;
        } completion:^(BOOL finished) {
            [srcView removeFromSuperview];
            appDel.window.rootViewController = self.destinationViewController;
        }];
    }];
}

啊!!好的,所以基本上我可以表现得像任何其他segue一样,通过替换根视图控制器来结束它。比我想象的容易多了!谢谢