Un'alternativa più semplice a UIDynamicAnimator
in iOS 7 è Spring Animation (una nuova e potente animazione a blocchi UIView), che può darti un piacevole effetto di rimbalzo con smorzamento e velocità:
Obiettivo C
[UIView animateWithDuration:duration
delay:delay
usingSpringWithDamping:damping
initialSpringVelocity:velocity
options:options animations:^{
//Animations
}
completion:^(BOOL finished) {
//Completion Block
}];
Swift
UIView.animateWithDuration(duration,
delay: delay,
usingSpringWithDamping: damping,
initialSpringVelocity: velocity,
options: options,
animations: {
//Do all animations here
}, completion: {
//Code to run after animating
(value: Bool) in
})
Swift 4.0
UIView.animate(withDuration:duration,
delay: delay,
usingSpringWithDamping: damping,
initialSpringVelocity: velocity,
options: options,
animations: {
//Do all animations here
}, completion: {
//Code to run after animating
(value: Bool) in
})
usingSpringWithDamping
0.0 == molto rimbalzante. 1.0 lo fa decelerare dolcemente senza overshooting.
initialSpringVelocity
è, approssimativamente, "distanza desiderata, divisa per secondi desiderati". 1.0 corrisponde alla distanza totale dell'animazione percorsa in un secondo. Esempio, la distanza totale dell'animazione è 200 punti e si desidera che l'inizio dell'animazione corrisponda a una velocità di visualizzazione di 100 pt / s, utilizzare un valore di 0,5.
Un tutorial più dettagliato e un'app di esempio sono disponibili in questo tutorial . Spero che questo sia utile per qualcuno.