Переход анимации с одного контроллера представления на другой контроллер представления - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть 2 вида контроллера с навигационным контроллером.Я толкаю один firstViewController к secondViewController.В настоящее время я использую

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

, но переход идет через второй вид.Я пытаюсь сделать так, чтобы secondView входил сзади и firstView исчезал, а secondView постепенно исчезал.

Есть ли способ достичь этого?

1 Ответ

0 голосов
/ 29 декабря 2018

Push / Pop UIVIewКонтроллер FadeIn / FadeOut в Swift

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)
        }
    }

}
...