Skip to content

Instantly share code, notes, and snippets.

@shrawan2015
Created March 15, 2019 07:21
Show Gist options
  • Save shrawan2015/00d23276c1533790284ca9b6deac3328 to your computer and use it in GitHub Desktop.
Save shrawan2015/00d23276c1533790284ca9b6deac3328 to your computer and use it in GitHub Desktop.
Pinch in ARKit
let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(didPinch(_:)))
sceneView.addGestureRecognizer(pinchGesture)
@objc
func didPinch(_ gesture: UIPinchGestureRecognizer) {
guard let _ = object else { return }
var originalScale = object?.scale
switch gesture.state {
case .began:
originalScale = object?.scale
gesture.scale = CGFloat((object?.scale.x)!)
case .changed:
guard var newScale = originalScale else { return }
if gesture.scale < 0.5{ newScale = SCNVector3(x: 0.5, y: 0.5, z: 0.5) }else if gesture.scale > 2{
newScale = SCNVector3(2, 2, 2)
}else{
newScale = SCNVector3(gesture.scale, gesture.scale, gesture.scale)
}
object?.scale = newScale
case .ended:
guard var newScale = originalScale else { return }
if gesture.scale < 0.5{ newScale = SCNVector3(x: 0.5, y: 0.5, z: 0.5) }else if gesture.scale > 2{
newScale = SCNVector3(2, 2, 2)
}else{
newScale = SCNVector3(gesture.scale, gesture.scale, gesture.scale)
}
object?.scale = newScale
gesture.scale = CGFloat((object?.scale.x)!)
default:
gesture.scale = 1.0
originalScale = nil
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment