我在看这个仓库
https://github.com/mmohsin991/gestures/blob/master/gestures/ViewController.swift
和这个例子
http://www.raywenderlich.com/50398/opengl-es-transformations-gestures
我有以下代码
@IBOutlet var pinchProperty: UIPinchGestureRecognizer!
@IBAction func pinchAction(sender: UIPinchGestureRecognizer) {
if(dbg){println("scale \(pinchProperty.scale)")}
let pinch: CGFloat = pinchProperty.scale
switch pinchProperty.state{
case .Began:
println("pinch started")
case .Changed:
geometryNodeMain.scale = SCNVector3(x:Float(pinch),y:Float(pinch),z:Float(pinch))
case .Ended:
println("pinch ended")
case .Cancelled:
break
case .Failed:
break
case .Possible:
break
default:
break
}
}
最初,双指捏合可以放大和缩小,但随后比例会重置为 1。转换 openGL 代码 http://www.raywenderlich.com/50398/opengl-es-transformations-gestures很乱。
有人可以帮忙转换这段代码吗?
最佳答案
这有效。
在某处初始化变量。
var scaleStart:CGFloat = 1.0
var scaleEnd:CGFloat = 1.0
然后像这样
@IBOutlet var pinchProperty: UIPinchGestureRecognizer!
@IBAction func pinchAction(sender: UIPinchGestureRecognizer) {
if(dbg){println("scale \(pinchProperty.scale)")}
let pinch: CGFloat = pinchProperty.scale
switch pinchProperty.state{
case .Began:
scaleStart = scaleEnd*pinch
if(dbg){println("pinch started \(scaleStart)")}
case .Changed:
scaleStart = scaleEnd*pinch
geometryNodeMain.scale = SCNVector3(
x:Float(scaleStart),
y:Float(scaleStart),
z:Float(scaleStart)
)
case .Ended:
scaleEnd = scaleStart
if(dbg){println("pinch ended \(scaleEnd)")}
case .Cancelled:
break
case .Failed:
break
case .Possible:
break
default:
break
}
}
关于ios - 捏合手势比例重置为 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29280004/