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)
我真的不确定发生了什么变化,或者为什么它需要教程中没有的这一行 - 如果有人能对此有所了解,我们将不胜感激!
我在使用斯坦福 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)
我真的不确定发生了什么变化,或者为什么它需要教程中没有的这一行 - 如果有人能对此有所了解,我们将不胜感激!