Ios 模拟UIScrollView减速

Ios 模拟UIScrollView减速,ios,objective-c,uiscrollview,uigesturerecognizer,Ios,Objective C,Uiscrollview,Uigesturerecognizer,我有一个UIPangestureRecognite,用于更改视图的框架。当手势的状态为UIgestureRecognitizerStateEnded时,是否有方法模拟UIScrollView或UITableView的减速?这是我目前的代码: if (panGesture.state == UIGestureRecognizerStateEnded) { [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOpti

我有一个
UIPangestureRecognite
,用于更改视图的框架。当手势的状态为
UIgestureRecognitizerStateEnded
时,是否有方法模拟
UIScrollView
UITableView
的减速?这是我目前的代码:

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
                     }
                 }];
}

但这不是一个平滑的卷轴。我想要一个减速器,直到它停到我设定的点。多亏了

你必须想出某种算法,根据手势的速度来计算你希望视图停在哪里,可以这样获得:

CGPoint velocity = [panGesture velocityInView:panGesture.view];
从这里开始,只需将视图设置为其计算的静止位置,并添加动画即可。我认为,UIViewAnimationOptionCurveEaseOut在这里是合适的。

WWDC 2012年第223次会议,“使用滚动视图增强用户体验”介绍了一种使用滚动视图的行为和“感觉”来设置不同视图位置的动画的方法(用户从未真正看到滚动视图)

会话中显示的方法的好处是,您的减速将始终与UIScrollView的减速相匹配,无论是现在还是永远


我确切地知道我希望它停止的点。没有必要计算它。但是,您给了我一个更改动画选项的好主意。UIViewAnimationOptionCurveEaseInOut对我有效。由@Jeff添加的第二个答案是一个更好的方法。我很高兴这一个在2013年对你们有效,但如果你们在这里添加一些实际代码,这将是一个更好的答案,因为现在视频不可用,即使它可用,我在工作的时候看电视会觉得不舒服。至于我,现在好像有空了。它基本上是说你应该在某个地方放置一个不可见的滚动视图,在应该滚动的区域放置一个简单的UIView,然后使用滚动的平移手势并将它们重新连接到简单视图。然后有一个滚动代理,你可以采取它的偏移量,这将减速为正常的滚动视图。我不知道我刚才看了什么,这太可笑了