首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setTranslation翻译中的速度问题:inView:

setTranslation翻译中的速度问题:inView:
EN

Stack Overflow用户
提问于 2015-02-12 08:24:20
回答 1查看 530关注 0票数 3

我用的是这个方法:

代码语言:javascript
复制
- (void)setTranslation:(CGPoint)translation inView:(UIView *)view

来自UIPanGestureRecognizer课程,我不理解围绕它的速度讨论。

Appel的文件显示:

在指定视图的坐标系中设置转换值。改变平移值会重置平底锅的速度。

这到底是什么意思?什么是“复位速度的锅”?

任何帮助都将不胜感激..。提前感谢!

-编辑

请参阅以下代码:

代码语言:javascript
复制
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];
...
}
EN

回答 1

Stack Overflow用户

发布于 2015-02-12 08:32:54

它的意思是,如果您处于摇摄手势的中间(您正在拖动某物),并且在该手势上调用setTranslation:inView:,它的速度将被重置为0;pan手势不仅给您提供了转换,而且给出了手势的速度(您正在拖的速度)以每秒单位单位(在这种情况下是点)。您可以通过调用velocityInView:来访问速度。如果你不使用速度,那就不用担心它,否则记住上面的话。

更新:

我猜你是想在拖动视图的时候移动它。我会稍微改变一下。

代码语言:javascript
复制
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应该是您要移动的视图的超级视图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28472557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档