我用的是这个方法:
- (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];
...
}发布于 2015-02-12 08:32:54
它的意思是,如果您处于摇摄手势的中间(您正在拖动某物),并且在该手势上调用setTranslation:inView:,它的速度将被重置为0;pan手势不仅给您提供了转换,而且给出了手势的速度(您正在拖的速度)以每秒单位单位(在这种情况下是点)。您可以通过调用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应该是您要移动的视图的超级视图。
https://stackoverflow.com/questions/28472557
复制相似问题