anonymous anonymous - 1 year ago 97
Swift Question

Dismiss view controller with custom animation?

I am using this line of code to dismiss my view controller

self.dismiss(animated: true, completion: nil)
, but I do not like the current animation. Instead I want to slide from left to right. Below is my attempt to test out an animation, but does not work.

UIView.animate(withDuration: 1.0, delay: 0.0, options: UIViewAnimationOptions.curveEaseIn, animations: {

let transition = CATransition()
transition.duration = 10
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromLeft

self.view.layer.add(transition, forKey: kCATransition)

self.dismiss(animated: false, completion: nil)
}, completion: nil)

Answer Source
 let transition: CATransition = CATransition()
    transition.duration = 0.5
    transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    transition.type = kCATransitionReveal
    transition.subtype = kCATransitionFromRight
    self.view.window!.layer.addAnimation(transition, forKey: nil)
    self.dismissViewControllerAnimated(false, completion: nil)