我想获得平移手势的速度,我想使用发送者的速度属性,但它似乎不起作用:
@IBAction func handleGesture(sender: AnyObject) {
let v = sender.velocity
}
但它抛出一个错误说:
"ambiguous use of 'velocity'"
如果那不是获取平移手势速度的方式,那是什么?
UIPanGestureRecognizer没有名为velocity
的属性。你应该使用velocityInView
方法。
func userPanned(sender: UIPanGestureRecognizer) {
let v = sender.velocityInView(self.view)
}
sender.velocityInView(self.view)为您提供每秒像素的速度。为了获得准确的速度,您需要将速度更改为每分钟像素,将其除以60,如下所示:
sender.velocityInView(self.view).x / 60 - 对于水平
sender.velocityInView(self.view).y / 60 - 垂直
因此,您可以通过添加初始值来更新位置,如下所示:
是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) - 垂直
谢谢。