2016-08-05 4 views
6

このコード行を使用して、ビューコントローラself.dismiss(animated: true, completion: nil)を無効にしていますが、現在のアニメーションが好きではありません。代わりに、私は左から右にスライドしたいです。以下は、アニメーションをテストする試みですが、動作しません。カスタムアニメーションでView Controllerを終了しますか?

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(...)をアニメーションの完成ブロックに移動し、それが動作するかどうかを調べることができます。そうでない場合は、カスタムセグメンテーションの方法に関するチュートリアルをオンラインでたくさん見つけることができます。私は決してそれをしていないので、私はあなたに何か指針を与えることはできませんが、Ray Wenderlichは、深いチュートリアルでは常に良い場所です。 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) 
関連する問題