1

I have a view, which i want to be resized as user wants, means user can increase or decrease height or width of UIView independently. I have tried using pinch gesture but it works with width and height together. I have implemented pan gesture on UIView to move it around the screen.

func addGestures() {
    let gestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePan))
    gestureRecognizer.delegate = self
    myView.addGestureRecognizer(gestureRecognizer)
    
    myView.isUserInteractionEnabled = true
    myView.isMultipleTouchEnabled = true
    
    //add pinch gesture
    let pinchGesture = UIPinchGestureRecognizer(target: self, action:#selector(pinchRecognized(pinch:)))
    pinchGesture.delegate = self
    myView.addGestureRecognizer(pinchGesture)
    
}

@objc func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
        if gestureRecognizer.state == .began || gestureRecognizer.state == .changed {
            let translation = gestureRecognizer.translation(in: self.view)
            // note: 'view' is optional and need to be unwrapped
            gestureRecognizer.view!.center = CGPoint(x: gestureRecognizer.view!.center.x + translation.x, y: gestureRecognizer.view!.center.y + translation.y)
            gestureRecognizer.setTranslation(CGPoint.zero, in: self.view)
        }
    }

@objc func pinchRecognized(pinch: UIPinchGestureRecognizer) {
        if let view = pinch.view {
            view.transform = view.transform.scaledBy(x: pinch.scale, y: pinch.scale)
            pinch.scale = 1
        }
    }

So how i can do this?

0 Answers0