[IOS]图片的旋转和缩放
实现图片的旋转和缩放也是IOS开发中一个比较常见的技术点,下面我们来一起学习,这功能如何实现?效果图:
运行的时候按住alt键能够实现图片的伸缩ViewController.h:
#import "ViewController.h"#import "MyGestureRecongnizer.h" //自定义手势@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; prviousScale=1; //缩放手势 UIPinchGestureRecognizer *pin=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(doPinch:)]; pin.delegate=self; [self.otherImage addGestureRecognizer:pin]; //旋转事件 UIRotationGestureRecognizer *rotaion=[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(doRotate:)]; rotaion.delegate =self; [self.otherImage addGestureRecognizer:rotaion]; //添加自定义手势(点击到X大于200的地方相应) MyGestureRecongnizer *my = [[MyGestureRecongnizer alloc] initWithTarget:self action:@selector(fun:)]; [self.view addGestureRecognizer:my]; }//自定义手势触发事件-(void)fun:(MyGestureRecongnizer *)my{ NSLog(@"OK");}//允许同时调用两个手势,如果是no的话就只能调用一个手势-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ return YES;}-(void)transfromImageView{ CGAffineTransform t=CGAffineTransformMakeScale(scale*prviousScale, scale*prviousScale); t=CGAffineTransformRotate(t, rotation+previousRotation); self.otherImage.transform=t;}//缩放方法-(void)doPinch:(UIPinchGestureRecognizer *)gesture{ scale=gesture.scale; //缩放倍数 [self transfromImageView]; if (gesture.state==UIGestureRecognizerStateEnded) { prviousScale=scale*prviousScale; scale=1; }}//旋转方法-(void)doRotate:(UIRotationGestureRecognizer *)gesture{ rotation=gesture.rotation; //旋转角度 [self transfromImageView]; if (gesture.state==UIGestureRecognizerStateEnded) { previousRotation=rotation+previousRotation; rotation=0; }}- (void)dealloc { [_otherImage release]; [super dealloc];}@end