如何在ViewControllers之间改变segue的速度

时间:2012-08-05 00:47:00

标签: objective-c ios segue uistoryboard

是否可以控制segue速度?

我已检查过文档,但Apple没有给出任何方法。

但我更多的是寻找入侵并改变较低级别代码的想法,以便在慢动作中进行猜测。

2 个答案:

答案 0 :(得分:5)

下面的代码是自定义segue,您可以在代码中设置持续时间的转换。

- (void)perform 
{
    UIViewController *src = (UIViewController *) self.sourceViewController;
    UIViewController *dst = (UIViewController *) self.destinationViewController;
    [UIView transitionFromView:src.view
                        toView:dst.view
                      duration:3.0
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    completion:NULL];

}

示例项目位于GitHub:https://github.com/weed/p120805_CustomSegue

您可以下载并运行它。我希望这对你有帮助。

答案 1 :(得分:0)

防止僵尸创建我认为最好还使用子视图添加/删除:

- (void)perform
{
    UIView *src = ((UIViewController *) self.sourceViewController).view;
    UIView *dst = ((UIViewController *) self.destinationViewController).view;

    UIWindow *window = [[[UIApplication sharedApplication] delegate] window];
    [window insertSubview:dst aboveSubview:src];

    [UIView transitionFromView:src
                        toView:dst
                      duration:1.5
                       options:UIViewAnimationOptionTransitionCrossDissolve
                    completion:^(BOOL finished){
                        [src removeFromSuperview];
                        window.rootViewController = self.destinationViewController;
                    }];
}

这是因为你没有使用导航控制器!