Анимация перехода от одного контроллера представления к другому контроллеру представления

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

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

но переход - это второй вид справа. То, что я пытаюсь сделать, это secondView появляется сзади, а firstView исчезает, а secondView исчезает.

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


person wes. i    schedule 29.12.2018    source источник
comment
вы можете добиться обратного второго затухания vc и затухания первого vc   -  person Devil Decoder    schedule 29.12.2018
comment
У вас есть пример, который может достичь этого?   -  person wes. i    schedule 29.12.2018


Ответы (1)


Push/Pop UIVIewController 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)
        }
    }

}
person Arash Etemad    schedule 29.12.2018