2015-04-28 27 views
6

Ho avuto la seguente transizione personalizzata utilizzando UIView.animateWithDuration(...usingSpringWithDamping:...) che ha funzionato perfettamente.iOS: springWithDamping come animazione per animazione KeyFrame

UIView.animateWithDuration(self.transitionDuration(transitionContext), 
    delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 1.0, 
    options: nil, animations: {() in 
    // ... 
}, completion: {(Bool) in 
    // ... 
}) 

Ma poi ho dovuto prolungare il mio passaggio personalizzato con UIViewControllerInteractiveTransitioning in modo da avere una transizione interattiva in cui l'utente può scorrere verso il basso la vista modale di nuovo.

Quindi avevo bisogno di fotogrammi chiave per l'animazione in modo che il UIPercentDrivenInteractiveTransition funzioni correttamente.

Così ho cambiato la funzione di animazione per utilizzare UIView.animateWithKeyframes....

UIView.animateKeyframesWithDuration(self.transitionDuration(transitionContext), 
    delay: 0.0, options: UIViewKeyframeAnimationOptions.CalculationModeCubic, 
    animations: {() in 
    // ... 
}, completion: {(Bool) in 
    // ... 
}) 

Il mio problema ora: ho perso l'animazione di primavera.

ho controllato diversi link, uno dei più promettenti era:

... ma con .addKeyframes... metodo non posso specificare un blocco di completamento di cui ho bisogno.

Qualche suggerimento? : -/

+0

Hai guardato https://github.com/felixjendrusch/Marionette? – Eran

+0

a parte, controlla questo post sulle animazioni primaverili https://medium.com/@flyosity/your-spring-animations-are-bad-and-it-s-probably-apple-s-fault-784932e51733 –

risposta

0

Prova questa:

UIView.animateKeyframesWithDuration(self.transitionDuration(transitionContext), 
    delay: 0.0, options: UIViewKeyframeAnimationOptions.CalculationModeCubic, 
    animations: {() in 
     UIView.addKeyframeWithRelativeStartTime(0.0, 
      relativeDuration:0.5, 
      animations: {() in 
       // first animation 
     })  
     UIView.addKeyframeWithRelativeStartTime(0.5, 
      relativeDuration:0.5, 
      animations: {() in 
       // spring animation 
     }) 
}, completion: {(Bool) in 
    // cleaning 
})