Resize - Rotate - Move View or image view in swift

Resize - Rotate - Move View or image view in swift .

import UIKit

class ViewController: UIViewController {
    
    var frameImageView:UIView!
    var prevPoint:CGPoint!
    var resizeView:UIView!
    var rotateView:UIView!
    var deltaAngle:Float!
    var startTransform:CGAffineTransform!
    
    
    override func viewDidLoad() {
            super.viewDidLoad()
        
        frameImageView = UIView(frame: CGRectMake(100,100,100,100));
        frameImageView.backgroundColor = UIColor.yellowColor();
        self.view.addSubview(frameImageView)
        
        let panMoveGesture:UIPanGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(ViewController.moveFrame(_:)))
        frameImageView.addGestureRecognizer(panMoveGesture)

        
        
        resizeView = UIView(frame: CGRectMake(frameImageView.frame.size.width-30, frameImageView.frame.size.height-30,30,30));
        resizeView.backgroundColor = UIColor.redColor();
        self.frameImageView.addSubview(resizeView)
        
        let panResizeGesture:UIPanGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(ViewController.resizeTranslate(_:)))
        resizeView.addGestureRecognizer(panResizeGesture)
       
        
        
        rotateView = UIView(frame: CGRectMake(0,70,30,30));
        rotateView.backgroundColor = UIColor.blueColor();
        self.frameImageView.addSubview(rotateView)
        
        let panRotateGesture:UIPanGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(ViewController.rotateViewPanGesture(_:)))
        rotateView.addGestureRecognizer(panRotateGesture)
        
        
    }
    
    func moveFrame(recognizer:UIPanGestureRecognizer){
        if (recognizer.state == UIGestureRecognizerState.Began)
        {
            prevPoint = recognizer.locationInView(frameImageView.superview)
            frameImageView.setNeedsDisplay()
        }
        else if(recognizer.state == UIGestureRecognizerState.Changed){
            
            let point = recognizer.locationInView(frameImageView.superview)
            
            frameImageView.center = point
            
           
            frameImageView.setNeedsDisplay()
            
        }
        else if(recognizer.state == UIGestureRecognizerState.Ended){
            prevPoint = recognizer.locationInView(frameImageView.superview)
            frameImageView.setNeedsDisplay()
        }

    }
    
    func resizeTranslate(recognizer:UIPanGestureRecognizer){
        
        if (recognizer.state == UIGestureRecognizerState.Began)
        {
            prevPoint = recognizer.locationInView(frameImageView.superview)
            frameImageView.setNeedsDisplay()
        }
        else if(recognizer.state == UIGestureRecognizerState.Changed){
            
            let point = recognizer.locationInView(frameImageView.superview)
            var wChange:CGFloat = 0.0; var hChange:CGFloat = 0.0;
            
            
            wChange = (point.x - prevPoint.x); //Slow down increment
            hChange = (point.y - prevPoint.y); //Slow down increment
            
            
            frameImageView.bounds = CGRectMake(frameImageView.bounds.origin.x, frameImageView.bounds.origin.y, frameImageView.bounds.size.width + (wChange), frameImageView.bounds.size.height + (hChange));
            
            resizeView.frame = CGRectMake(frameImageView.bounds.size.width-30, frameImageView.bounds.size.height-30, 30, 30);
            rotateView.frame = CGRectMake(0, frameImageView.bounds.size.height-30, 30, 30);
            
            prevPoint = recognizer.locationInView(frameImageView.superview)
            frameImageView.setNeedsDisplay()

        }
        else if(recognizer.state == UIGestureRecognizerState.Ended){
            prevPoint = recognizer.locationInView(frameImageView.superview)
            frameImageView.setNeedsDisplay()
        }
        
    }
    func rotateViewPanGesture(recognizer:UIPanGestureRecognizer){
        
        if (recognizer.state == UIGestureRecognizerState.Began)
        {
            let point:CGPoint! = recognizer.locationInView(frameImageView.superview)
            deltaAngle = Float(atan2( point.y  - frameImageView.center.y, point.x - frameImageView.center.x));
            startTransform = frameImageView.transform;
        }
        else if(recognizer.state == UIGestureRecognizerState.Changed){
            let point:CGPoint! = recognizer.locationInView(frameImageView.superview)
            let ang:Float = Float(atan2( point.y  - frameImageView.center.y, point.x - frameImageView.center.x));
            let angleDiff:Float = deltaAngle - ang;
            frameImageView.transform = CGAffineTransformMakeRotation(CGFloat(-angleDiff));
            frameImageView.setNeedsDisplay()
            
        }
        else if(recognizer.state == UIGestureRecognizerState.Ended){
            
            let point:CGPoint! = recognizer.locationInView(frameImageView.superview)
          
            deltaAngle = Float(atan2( point.y  - frameImageView.center.y, point.x - frameImageView.center.x));
            startTransform = frameImageView.transform;
            frameImageView.setNeedsDisplay()
        }
    }
    

}

Comments

Popular posts from this blog

Tranquil Tunes: Soothing Piano & Guitar Music for Study, Work, Relaxation & Meditation

NSTimer - Tạo ứng dụng đếm thời gian swift-ios