UIGestureRecognizer介绍
1、UIGestureRecognizer类是个抽象类,下面的子类是具体的手势,开发者可以直接使用这些手势识别。
- UITapGestureRecognizer 点一下
- UIPinchGestureRecognizer 二指往内或往外拨动,如缩放
- UIRotationGestureRecognizer 旋转
- UISwipeGestureRecognizer 滑动,快速移动
- UIPanGestureRecognizer 拖移,慢速移动
- UILongPressGestureRecognizer 长按
2、使用手势步骤
1)创建手势实例。
2)添加到需要识别的View中。
一个手势中能对应一个view,但是一个view可以有多个手势。
3、Pan拖动手势
UIImageView * redImageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 100, 160)];
redImageView.backgroundColor = [UIColor redColor];
redImageView.userInteractionEnabled = YES;
[self.view addSubview:redImageView];
UIPanGestureRecognizer * panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[redImageView addGestureRecognizer:panGestureRecognizer];
回调方法
-(void)handlePan:(UIPanGestureRecognizer*)recognizer
{
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointZero inView:self.view];
}
4、Pinch缩放手势
UIPinchGestureRecognizer * pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)];
[redImageView addGestureRecognizer:pinchGestureRecognizer];
回调方法
-(void)handlePinch:(UIPinchGestureRecognizer*)recognizer
{
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
recognizer.scale = 1;
}
5、Rotation旋转手势
UIRotationGestureRecognizer * rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotate:)];
[redImageView addGestureRecognizer:rotationGestureRecognizer];
回调方法
-(void)handleRotate:(UIRotationGestureRecognizer*)recognizer
{
recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);
recognizer.rotation = 0;
}