繁体   English   中英

快速改变手势速度

[英]Change pangesture speed swift

是否可以减慢平移手势,使其以较低的速度移动。

这是我用来移动 3d 对象的代码

    @objc func handlePan(gestureRecognize: UIPanGestureRecognizer) {

    let numberOfTouches = gestureRecognize.numberOfTouches
    let translation = gestureRecognize.translation(in: gestureRecognize.view!)
    var widthRatio = Float(translation.x) / Float(gestureRecognize.view!.frame.size.width) - lastWidthRatio

    if (numberOfTouches == fingersNeededToPan) {
        //  WIDTH constraints
        if(widthRatio >= maxWidthRatioRight) {
            widthRatio = maxWidthRatioRight
        }
        if(widthRatio <= maxWidthRatioLeft) {
            widthRatio = maxWidthRatioLeft
        }

        self.artRoomScene.boxnode.eulerAngles.y = Float(2 * Double.pi) * widthRatio
        //for final check on fingers number
        lastFingersNumber = fingersNeededToPan
    }

    lastFingersNumber = (numberOfTouches>0 ? numberOfTouches : lastFingersNumber)

    if (gestureRecognize.state == .ended && lastFingersNumber==fingersNeededToPan) {
        lastWidthRatio = widthRatio
    }
}

访问平移手势的速度

"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) - 垂直

谢谢。”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM