setTranslation中的Velocity问题:inView:

时间:2015-02-12 08:24:20

标签: ios iphone uikit uigesturerecognizer uipangesturerecognizer

我正在使用这种方法:

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

1 个答案:

答案 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应该是您尝试移动的视图的超级视图。