3

我有一个UIPanGestureRecognize用来更改视图框架的。有没有办法模拟UIScrollViewUITableView当手势的状态是减速UIGestureRecognizerStateEnded?这是我当前的代码:

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

但这不是一个流畅的滚动。我想要一些能减速直到停止到我设定的点的东西。谢谢

4

2 回答 2

14

WWDC 2012 的第 223 场会议,“使用滚动视图增强用户体验”,介绍了一种使用滚动视图的行为和“感觉”来为不同视图的位置设置动画的方法(滚动视图实际上对用户不可见)。

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

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

于 2013-08-23T16:33:09.813 回答
1

您必须提出某种算法来根据手势的速度计算您希望视图停止的位置,可以这样获得:

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

从那里开始,只需将您的视图动画化到其计算出的静止位置并添加动画以使其到达那里。我相信UIViewAnimationOptionCurveEaseOut在这里是合适的。

于 2013-08-23T15:41:57.857 回答