2016-08-05 11 views
6

Ich benutze diese Codezeile, um meine View-Controller self.dismiss(animated: true, completion: nil) zu entlassen, aber ich mag die aktuelle Animation nicht. Stattdessen möchte ich von links nach rechts gleiten. Unten ist mein Versuch, eine Animation zu testen, funktioniert aber nicht.View-Controller mit benutzerdefinierter Animation beenden?

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

Ich glaube, hier ist was passiert ist, dass die der View-Controller zur gleichen Zeit entlassen wird, dass die Animation beginnt. Sie könnten versuchen, die Datei self.dismiss (...) in den Block der Animationen zu verschieben, um zu sehen, ob das funktioniert. Wenn dies nicht der Fall ist, finden Sie online viele Tutorials zu benutzerdefinierten Themen. Ich habe es noch nie gemacht, also kann ich dir selbst keine Hinweise geben, aber Ray Wenderlich ist immer ein guter Ort für eingehende Tutorials. https://www.raywenderlich.com/86521/how-to-make-a-view-controller-transition-animation-like-in-the-ping-app – Erik

Antwort

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) 
Verwandte Themen