使用 UIPanGestureRecognizer 旋转 ImageView,错误-- Swift

Rotating ImageView with UIPanGestureRecognizer, ERROR-- Swift

我正在尝试使用 pangesturerecognizer 旋转图像视图。基本上,我根据 x 坐标旋转图像。我快到了,但我 运行 遇到了一些错误。

我通过这样做设置了手势识别器(我必须以编程方式完成所有事情):

        let personDrag = UIPanGestureRecognizer(target: self, action: #selector(foo.personDragRecognizer))

        rPersonImageView.isUserInteractionEnabled = true
        rPersonImageView.addGestureRecognizer(personDrag)
        self.fooVarTap6 = personDrag //the class is called foo

然后是手势识别函数:

@objc func personDragRecognizer(_ gestureRecognizer: UIPanGestureRecognizer) {

    guard personDrag.state == .began || personDrag.state == .changed else {
        return
    }

    guard let imgView = personDrag.view else {
        return
    }

    let translation = personDrag.translation(in: self.view)
    imgView.center = CGPoint(x: imgView.center.x + translation.x, y: imgView.center.y + translation.y)
    personDrag.setTranslation(CGPoint.zero, in: self.view)

    //originally had self before .degreesToRadians
    let angle: CGFloat = rPersonImageView.degreesToRadians(180.0)

    /* After reaching x point case - rotating and setting rotation occured to prohibit further rotation */

    if imgView.layer.frame.origin.x <= 190, currentRotation != .xPoint190 {

        imgView.transform = imgView.transform.rotated(by: angle)
        currentRotation = .xPoint190

    } else if imgView.layer.frame.origin.x >= 300, currentRotation != .xPoint300 {

        imgView.transform = imgView.transform.rotated(by: angle)
        currentRotation = .xPoint300
    }

}

我提到 personDrag 的每个地方都说 "use of unresolved identifier personDrag" 但我定义了 personDrag,如您所见。它还说 "UIImageView has no member degreesToRadian" 但堆栈上的其他人说应该。谁能帮我这个?任何帮助将不胜感激!提前致谢。

干杯, 西奥

personDrag 被定义为手势识别器,正确分配并正确编码。但是在你的 personDragRecognizer() 作为 定义的 中,每个引用都应该反对 gestureRecognizer

使事情正常进行的最简单的修复方法是将函数重命名为:

func personDragRecognizer(_ personDrag UIPanGestureRecognizer) {
    // your code here
}

另一个修复方法是将其中的每个引用重命名为:

guard gestureRecognizer.state == .began || gestureRecognizer.state == .changed else {
    return
}

依此类推。