gpt4 book ai didi

ios - 平移手势 : why need setTranslation to zero?

转载 作者:可可西里 更新时间:2023-11-01 03:02:47 25 4
gpt4 key购买 nike

我在 View 中添加了一个平移手势,手指移动时移动 View ,但我发现如果我不调用 recognizer.setTranslation(CGPointZero, inView: self.view),翻译是不正确的。为什么?

  @IBAction func handlePan(recognizer:UIPanGestureRecognizer) {

let translation = recognizer.translationInView(self.view)
recognizer.view!.center = CGPoint(x:recognizer.view!.center.x + translation.x,
y:recognizer.view!.center.y + translation.y)
recognizer.setTranslation(CGPointZero, inView: self.view)// this line must need, why?
...
}

最佳答案

我的英语说得不好,但我想这可能足以解释这一点。

UIPanGestureRecognizer 中的翻译表示从您开始拖动的位置到当前手指位置的向量,尽管该向量的原点是 {0, 0}。所以你需要确定你拖动的距离是这个向量的另一个点。你通过调用得到这一点:

recognizer.translationInView(self.view)

然后这一点帮助您设置了新的 View 位置。但是UIPanGestureRecognizer确实是一个“连续”的报告者,她不会忘记上次报告后的状态。她不知道你已经用完了那部分平移(重新定位你的 View ),所以下次调用“handlePan”时,平移不是从你手指的先前位置计算的,它是从开始拖动手指的原始位置!!

这就是为什么你必须调用:

recognizer.setTranslation(CGPointZero, inView: self.view)

每次您使用该翻译来重新定位您的 View 时,就好像您在告诉识别器您将要开始一个新的拖动手势。

关于ios - 平移手势 : why need setTranslation to zero?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29558622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com