模拟UIScrollView减速
我有一个UIPanGestureRecognize
,我用它来改变视图的框架。 有一种方法来模拟手势的状态是UIGestureRecognizerStateEnded
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 } }]; }
但这不是一个光滑的滚动。 我想要一些减速的东西,直到它停止到我设定的点。 谢谢
WWDC2012会议“使用滚动视图增强用户体验”中的会话223介绍了一种使用滚动视图的行为和“感觉”来设置不同视图的位置animation的方法(没有滚动视图实际上对用户可见)。
会话中显示的方法的好处是,你的减速将永远匹配UIScrollView,现在和永远。
你将不得不提出一种algorithm,根据手势的速度来计算视图停止的位置,可以这样获得:
CGPoint velocity = [panGesture velocityInView:panGesture.view];
从那里它应该只是一个animation你的观点进入计算的rest的地方,并添加一个animation来获得它的问题。 我相信UIViewAnimationOptionCurveEaseOut
在这里是适当的。