我想获得平移手势的速度,我想使用发送方的速度属性,但它似乎不起作用:
@IBAction func handleGesture(sender: AnyObject) {
let v = sender.velocity
}
但它会抛出错误说:
"ambiguous use of 'velocity'"
如果这不是获取平移手势速度的方法,那是什么?
答案 0 :(得分:6)
UIPanGestureRecognizer没有名为velocity
的属性。您应该使用velocityInView
方法。
func userPanned(sender: UIPanGestureRecognizer) {
let v = sender.velocityInView(self.view)
}
答案 1 :(得分:0)
sender.velocityInView(self.view)为您提供速度,以像素/秒为单位。为了获得准确的速度,您需要通过将速度除以60来将速度更改为每分钟像素数,如下所示:
sender.velocityInView(self.view).x / 60-对于水平
sender.velocityInView(self.view).y / 60-对于垂直
因此,您只需通过添加初始值即可更新位置,如下所示:
var initialLocation:CGPoint? ->全球
initialLocation.x =(initialLocation ?? 0)
(initialLocation.x)! =(initialLocation.x)! +(sender.velocity(in:colorSlider!)。x / 60)-对于水平
(initialLocation.y)! =(initialLocation.y)! +(sender.velocity(in:colorSlider!)。y / 60)-对于垂直
谢谢。