UIView *gestureView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 300, 300)];
gestureView.backgroundColor = [UIColor blackColor];
[self.view addSubview:gestureView];
/*---------------点击手势-------------*/
UITapGestureRecognizer *tap1 = [[UITapGestureRecognizer alloc ] initWithTarget : self action : @selector (tap1Action:)];
//注意:一个点击手势,只能识别一种手势,单击和双击是不同的两个手势
//设置点击的数量
tap1.numberOfTapsRequired = 1 ;
//设置点击的个数
tap1.numberOfTouchesRequired = 1 ;
//往gestureView上添加一个手势
[gestureView addGestureRecognizer:tap1];
UITapGestureRecognizer *tap2 = [[UITapGestureRecognizer alloc ] initWithTarget : self action : @selector (tap2Action:)];
tap2.numberOfTapsRequired = 2 ;
[gestureView addGestureRecognizer:tap2];
//如果参数中的手势出发了,则自身失效
[tap1 requireGestureRecognizerToFail:tap2];
/*---------------轻扫手势-------------*/
UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc ] initWithTarget : self action : @selector (swipe:)];
// 设置方向---向上轻扫
swipeGesture. direction = UISwipeGestureRecognizerDirectionUp;
[gestureView addGestureRecognizer:swipeGesture];
/*---------------平移手势-------------*/
// 平移手势(滑动)
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc ] initWithTarget : self action : @selector (panAction:)];
[gestureView addGestureRecognizer:panGesture];
/*---------------长按手势-------------*/
// 长按手势
UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc ] initWithTarget : self action : @selector (longPress:)];
//设置长安的最短时间
longPressGesture.minimumPressDuration = 3;
[gestureView addGestureRecognizer:longPressGesture];
/*---------------旋转手势-------------*/
// 旋转手势
UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc ] initWithTarget : self action : @selector (rotation:)];
[gestureView addGestureRecognizer:rotationGesture];
/*----------捏合手势--------------*/
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc ] initWithTarget : self action : @selector (pinchAction:)];
[gestureView addGestureRecognizer:pinch];
}
//单击
- (void)tap1Action:(UITapGestureRecognizer *)tap1
{
NSLog(@" 单击 ");
}
//双击
- (void)tap2Action:(UITapGestureRecognizer *)tap2
{
NSLog(@" 双击 ");
}
//轻扫
- ( void )swipe:(UISwipeGestureRecognizer *)swipe
{
if (swipe. direction == UISwipeGestureRecognizerDirectionUp) {
NSLog(@" 向上清扫 ");
}
}
//平移
- ( void )panAction:(UIPanGestureRecognizer *)pan
{
CGPoint p = [pan locationInView:pan.view];
NSLog( @"%@" , NSStringFromCGPoint(p));
}
//长按
- ( void )longPress:(UILongPressGestureRecognizer *)longPress
{
if (longPress. state == UIGestureRecognizerStateBegan) {
NSLog(@" 开始长按 ");
} else if (longPress. state == UIGestureRecognizerStateEnded) {
NSLog(@" 结束长按 ");
}
}
//旋转
- ( void )rotation:(UIRotationGestureRecognizer *)rotation
{
//获取旋转角度---弧度
CGFloat r = rotation.rotation;
//弧度转角度
//180/Pi = x/r
NSLog(@"r is %.2f", 180 / M_PI * r);
}
//捏合
- (void)pinchAction:(UIPinchGestureRecognizer *)pinch
{
//获得捏合的比例
CGFloat scale = pinch.scale;
// pinch.view.transform = CGAffineTransformScale(pinch.view.transform, scale, scale);
pinch.view.transform = CGAffineTransformMakeScale(scale, scale);
}
- (void)viewDidLoad {
[ super viewDidLoad];
//创建imagemView
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Elephant.jpg"]];
self.imageView = imageView;
[self.view addSubview:imageView];
//设置初始状态
[ self loadImageView];
//对imageView添加手势
imageView.userInteractionEnabled = YES ;
UIPanGestureRecognizer *panGR = [[UIPanGestureRecognizer alloc ] initWithTarget : self action : @selector (pan:)];
[ self . imageView addGestureRecognizer:panGR];
UIPinchGestureRecognizer *pinchGR = [[UIPinchGestureRecognizer alloc ] initWithTarget : self action : @selector (pinch:)];
[ self . imageView addGestureRecognizer:pinchGR];
UIRotationGestureRecognizer *rotationGR = [[UIRotationGestureRecognizer alloc ] initWithTarget : self action : @selector (rotation:)];
[self.imageView addGestureRecognizer:rotationGR];
UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc ] initWithTarget : self action : @selector (tap:)];
tapGR.numberOfTapsRequired = 2 ;
[ self . imageView addGestureRecognizer:tapGR];
}
//移动
-( void )pan:(UIPanGestureRecognizer *)gr{
//第一种方式:修改中心点实现位移
// CGPoint translation = [gr translationInView:self.view];
// CGPoint center = self.imageView.center;
// center.x+=translation.x;
// center.y+=translation.y;
// self.imageView.center= center;
// [gr setTranslation:CGPointZero inView:self.view];
//第二种方式:修改transform实现位移
// 读取位移值时,需要确定一个坐标系
// 读取imageView坐标系下的值,
// 则用于修改imageView坐标系下的transform
// 读取self.view坐标系下的值
// 则需要用于修改self.view坐标系下的center属性
CGPoint translation = [gr translationInView:self.imageView];
self.imageView.transform = CGAffineTransformTranslate(self.imageView.transform, translation.x, translation.y);
[gr setTranslation: CGPointZero inView: self . imageView ];
}
//缩放
-( void )pinch:(UIPinchGestureRecognizer*)sender
{
self.imageView.transform = CGAffineTransformScale(self.imageView.transform, sender.scale, sender.scale);
sender.scale = 1;
}
//旋转
-( void )rotation:(UIRotationGestureRecognizer*)sender
{
self . imageView .transform = CGAffineTransformRotate ( self . imageView .transform, sender.rotation);
sender.rotation = 0;
}
//点击
-( void )tap:(UITapGestureRecognizer *)gr
{
[ self loadImageView];
}
-(void)loadImageView{
//设置中心点
//self.imageView.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2);
self . imageView .center = self .view.center;
CGFloat scaleX = self .view.bounds.size.width/ self . imageView .bounds.size.width;
CGFloat scaleY = self .view.bounds.size.height/ self . imageView .bounds.size.height;
//设置缩放
self.imageView.transform = CGAffineTransformMakeScale(MIN(scaleX, scaleY), MIN(scaleX, scaleY));
}