Swift 3 中的 UIPinchGestureRecognizer

UIPinchGestureRecognizer in Swift 3

我在使用斯坦福 2016 CS193P 在线课程时遇到了一些问题。 我怀疑问题可能是我使用的是 Xcode 8.2.1(所以我不能使用视频中的相同代码),但我也可能在某处失误了。我查阅了文档并查看了堆栈溢出,但我无法解决这个问题。

FaceView 代表一张卡通脸,它应该随着捏合缩放(使用 UIPinchGestureRecognizer)。为此,在 FaceViewController(FaceView 的 ViewController)中创建了一个出口:

@IBOutlet weak var faceView: FaceView!{
    didSet{
    faceView.addGestureRecognizer(UIPinchGestureRecognizer(target:faceView, action:#selector(FaceView.changeScale(recognizer:))))
    updateUI()
}
}

在FaceView中执行函数changeScale class:

func changeScale(recognizer: UIPinchGestureRecognizer){
    switch recognizer.state {
    case .changed, .ended:
        NSLog("gesture")
        scale *= recognizer.scale
        recognizer.scale=1.0
        let resultString = "pinch - scale = \(scale))"
        NSLog(resultString)
    default:
        break
    }
}

我向控制台添加了一个输出,以查看当我们打孔视图时比例是否发生变化。确实如此(控制台输出示例:pinch - scale = 1.10142245024732; pinch - scale = 1.11638202852033;)

但是景色一点也没有变。

我正在全面了解这一点...感谢任何帮助

我已经确认 UserInteraction 设置为 True IBOutlet 已连接(通过控制台输出确认)

你得到了带比例的变量,但你没有缩放 UIView。 你可以用

self.transform = CGAffineTransformScale(CGAffineTransformIdentity, scale, scale);

例如。

@Daivest 似乎接近答案:

self.transform = CGAffineTransform(scaleX:scale, y: scale)

我真的不确定发生了什么变化,或者为什么它需要教程中没有的这一行 - 如果有人能对此有所了解,我们将不胜感激!