我正在使用这种方法:
- (void)setTranslation:(CGPoint)translation inView:(UIView *)view
来自UIPanGestureRecognizer
课程,我不明白围绕这个问题的速度讨论。
Appel
的文档说:
设置指定坐标系中的平移值 视图。更改平移值会重置平移速度。
究竟是什么意思?什么是“重置锅的速度”?
任何帮助将不胜感激..提前致谢!
- 编辑
请参阅此代码:
if (recognizer.state == UIGestureRecognizerStateChanged) {
CGPoint translation = [recognizer translationInView:self.cardsScrollView];
recognizer.view.center = CGPointMake(recognizer.view.center.x, recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:recognizer.view];
...
}
答案 0 :(得分:1)
这意味着如果你正处于平移手势的中间(你正在拖动某些东西)而你在那个手势上调用setTranslation:inView:
,那么它的速度将被重置为0;
平移手势不仅以每秒为单位(在这种情况下为每秒点数)提供平移,而且还提供手势的速度(拖动速度)。您可以通过调用velocityInView:
来访问速度。
如果您不使用速度,请不要担心,否则请记住以上内容。
更新:
我猜你在拖动时试图移动视图。我的做法略有不同。
if (recognizer.state == UIGestureRecognizerStateBegan) {
CGAffineTransform transform = recognizer.view.transform;
[recognizer setTranslation:CGPointMake(transform.tx, transform.ty) inView:self];
} else if (recognizer.state == UIGestureRecognizerStateChanged) {
CGPoint translation = [recognizer translationInView:self.cardsScrollView];
recognizer.view.transform = CGAffineTransformMakeTranslation(translation.x, translation.y);
}
要记住的是,self.cardsScrollView应该是您尝试移动的视图的超级视图。