2016-08-05 64 views
6

我正在使用这行代码来关闭我的视图控制器self.dismiss(animated: true, completion: nil),但我不喜欢当前的动画。相反,我想从左到右滑动。以下是我试图测试一个动画,但不起作用。关闭视图控制器与自定义动画?

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) 
+0

我相信这里发生的一切就是视图控制器在该动画开始同时被解雇。你可以尝试移动self.dismiss(...)到动画完成块,看看是否有效。如果没有,你可以在网上找到很多关于如何定制赛车的教程。我从来没有这样做过,所以我不能给你任何指点,但雷文德里克总是一个深入教程的好地方。 https://www.raywenderlich.com/86521/how-to-make-a-view-controller-transition-animation-like-in-the-ping-app – Erik

回答

20
let transition: CATransition = CATransition() 
transition.duration = 0.5 
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
transition.type = kCATransitionReveal 
transition.subtype = kCATransitionFromRight 
self.view.window!.layer.add(transition, forKey: nil) 
self.dismissViewControllerAnimated(false, completion: nil) 
相关问题