【问题标题】:Transition animation from one view controller to another view controller将动画从一个视图控制器过渡到另一个视图控制器
【发布时间】:2019-05-26 21:26:16
【问题描述】:

我有 2 个带有导航控制器的视图控制器。我将一个 firstViewController 推到 secondViewController。我目前正在使用

[self.navigationController pushViewController:detailsViewController animated:YES];

但是转场是从右边进来的secondView。我想做的是 secondView 从后面进来,而 firstView 淡出,而 secondView 淡入。

有没有办法做到这一点?

【问题讨论】:

  • 可以实现反向第二个vc淡入和第一个vc淡出
  • 你有什么例子可以做到这一点吗?

标签: ios objective-c uiviewcontroller uiviewanimationtransition


【解决方案1】:

在 Swift 中推送/弹出 UIVIewController FadeIn/FadeOut

class FadeInPushSegue: UIStoryboardSegue {

    var animated: Bool = true

    override func perform() {

        if var sourceViewController = self.sourceViewController as? UIViewController, var destinationViewController = self.destinationViewController as? UIViewController {

            var transition: CATransition = CATransition()

            transition.type = kCATransitionFade; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
            sourceViewController.view.window?.layer.addAnimation(transition, forKey: "kCATransition")
            sourceViewController.navigationController?.pushViewController(destinationViewController, animated: false)


        }
    }

}

class FadeOutPopSegue: UIStoryboardSegue {

    override func perform() {

        if var sourceViewController = self.sourceViewController as? UIViewController, var destinationViewController = self.destinationViewController as? UIViewController {

            var transition: CATransition = CATransition()

            transition.duration = 0.4
            transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
            transition.type = kCATransitionFade; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade

            sourceViewController.view.window?.layer.addAnimation(transition, forKey: "kCATransition")
            sourceViewController.navigationController?.popViewControllerAnimated(false)
        }
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多