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
Post a Comment