UIGestureRecognizer是一個定義基本手勢的抽象類:
1单料、拍擊UITapGestureRecognizer (任意次數(shù)的拍擊)
2固该、向里或向外捏UIPinchGestureRecognizer (用于縮放)
3扳躬、搖動或者拖拽UIPanGestureRecognizer (拖動)
4、擦碰UISwipeGestureRecognizer (以任意方向)
5、旋轉(zhuǎn)UIRotationGestureRecognizer (手指朝相反方向移動)
6贷币、長按UILongPressGestureRecognizer (長按)
1 首先建立一個要拖動的控件
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
btn.backgroundColor = [UIColor redColor];
[self.view addSubview:btn];
2 添加拖動手勢
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];//創(chuàng)建手勢
[btn setUserInteractionEnabled:YES]; //設(shè)置啟用用戶交互
[btn addGestureRecognizer:pan];//把手勢添加到控件
- (void) handlePan: (UIPanGestureRecognizer *)rec{
// NSLog(@"xxoo---xxoo---xxoo");
CGPoint point = [rec translationInView:self.view];
//該方法返回在橫坐標(biāo)上击胜、縱坐標(biāo)上拖動了多少像素
NSLog(@"%f,%f",point.x,point.y);
rec.view.center = CGPointMake(rec.view.center.x + point.x, rec.view.center.y + point.y);
//rec.view 指的是把rec添加到那個控件上的
// 因為拖動起來一直是在遞增,所以每次都要用setTranslation:方法制0這樣才不至于不受控制般滑動出視圖
[rec setTranslation:CGPointMake(0, 0) inView:self.view];
}
3添加縮放手勢
//縮放
UIPinchGestureRecognizer *ping = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)];
[btn setUserInteractionEnabled:YES]; //設(shè)置啟用用戶交互
[btn addGestureRecognizer:ping];
-(void) handlePinch:(UIPinchGestureRecognizer *)rec
{
NSLog(@" recognizer.scale------%f",rec.scale
);//縮放的倍數(shù)役纹,
// view.transform 為原來的 狀態(tài)偶摔;
rec.view.transform=CGAffineTransformScale(rec.view.transform, rec.scale,rec.scale);
}