Simuler la décélération UIScrollView

J'ai un UIPanGestureRecognize que j'utilise pour changer le cadre d'une vue. Existe-t-il un moyen de simuler la décélération de UIScrollView ou UITableView lorsque l'état du geste est UIGestureRecognizerStateEnded ? Voici mon code actuel:

 if (panGesture.state == UIGestureRecognizerStateEnded) { [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{ self.view.frame = CGRectMake(182, 0, self.view.frame.size.width, self.view.frame.size.height); } completion:^(BOOL finished) { if (finished) { //Do something } }]; } 

mais ce n'est pas un rouleau lisse. Je voudrais quelque chose qui décélère jusqu'à ce qu'il s'arrête au point que j'ai défini. Merci

La session 223 de la WWDC 2012, «Amélioration de l'expérience user avec les vues par défilement», a couvert une méthode pour utiliser le comportement d'un scrollview et «sentir» pour animer la position d'une vue différente.

L'avantage de la méthode présentée dans la session est que votre décélération correspond toujours à UIScrollView, maintenant et pour toujours.

https://developer.apple.com/videos/wwdc/2012/?id=223

Vous devriez find un algorithm quelconque pour calculer où vous voulez que la vue s'arrête en fonction de la vélocité du geste, ce qui peut être obtenu comme ceci:

 CGPoint velocity = [panGesture velocityInView:panGesture.view]; 

À partir de là, il suffirait d'animer votre sharepoint vue dans son lieu de repos calculé et d'append une animation pour l'atteindre. Je crois que UIViewAnimationOptionCurveEaseOut serait approprié ici.