手势
手势识别器是对触摸事件做了封装,手势识别器本身起到 了识别作用。
手势识别器是iOS中比较抽象的一个类,用于识别一个手 势,所谓手势:有规律的触摸。
手势分类:
轻拍手势、长按手势
平移手势、轻扫手势
缩放手势、旋转手势
屏幕边界平移手势
系统提供的⼿势识别器这个抽象⽗类我们是不会直接使⽤的,⽽是根据需 求使⽤特定的⼿势识别器创建对象,系统所提供的⼿势类型如下所⽰:
1.UITapGestureRecognizer是轻拍⼿势识别器,能识别轻拍操作
2.UILongPressGestureRecognizer是长按⼿势识别器,能识别长按操作
3.UIRotationGestureRecognizer是旋转⼿势识别器,能识别旋转操作
4.UIPinchGestureRecognizer是捏合⼿势识别器,能识别捏合操作
5.UIPanGestureRecognizer是平移⼿势识别器,能识别拖拽操作
6.UISwipeGestureRecognizer是轻扫⼿势识别器,能识别拖拽操作
7.UIScreenEdgePanGestureRecognizer是屏幕边缘轻扫识别器
应用步骤:
1.创建UIXXXGestureRecognizer对象,使⽤initWithTarget:action:⽅法
2.配置要识别的⼿势的相关信息
3.将⼿势添加到某个视图上
4.实现⼿势识别器⾥定义的⽅法
transform是view的⼀个重要属性,它在矩阵层⾯上改变view的显⽰状态, 能实现view的缩放、旋转、平移等功能
平移:CGAffineTransformMakeTranslation
缩放:CGAffineTransformMakeScale
旋转:CGAffineTransformMakeRotation
- (void)viewDidLoad {
[super viewDidLoad];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 50, 320, 500)];
imageView.image = [UIImage imageNamed:@"love.jpg"];
imageView.userInteractionEnabled = YES;
//1、创建满足需求的手势,在创建时关联手势触发时的方法
//2、配置手势的相关属性
//3、将手势添加到需要执行操作的视图上面
//4、实现手势方法,当触摸发生,手势识别器识别到相对应的触摸时,就会执行关联的方法。
[super viewDidLoad];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 50, 320, 500)];
imageView.image = [UIImage imageNamed:@"love.jpg"];
imageView.userInteractionEnabled = YES;
//1、创建满足需求的手势,在创建时关联手势触发时的方法
//2、配置手势的相关属性
//3、将手势添加到需要执行操作的视图上面
//4、实现手势方法,当触摸发生,手势识别器识别到相对应的触摸时,就会执行关联的方法。
//轻拍手势 UITapGestureRecognizer
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
//设置属性
//1、触发手势的手指个数
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
//设置属性
//1、触发手势的手指个数
tap.numberOfTouchesRequired = 1;
//2、触发手势的轻拍次数
tap.numberOfTapsRequired = 2;
//让imageView添加轻拍手势
[imageView addGestureRecognizer:tap];
[tap release];
//轻扫手势 UISwipeGestureRecognizer
UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)];
//指定清扫的方向
UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)];
//指定清扫的方向
swipe.direction = UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft;
[imageView addGestureRecognizer:swipe];
[swipe release];
//长按手势 UILongPressGestureRecognizer
UILongPressGestureRecognizer *longpress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longpressAction:)];
//长按手势触发的最短时间,默认是0.5
//长按手势 UILongPressGestureRecognizer
UILongPressGestureRecognizer *longpress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longpressAction:)];
//长按手势触发的最短时间,默认是0.5
longpress.minimumPressDuration = 3.0;
[imageView addGestureRecognizer:longpress];
[longpress release];
//缩放 UIPinchGestureRecognizer
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchAction:)];
[imageView addGestureRecognizer:pinch];
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchAction:)];
[imageView addGestureRecognizer:pinch];
[pinch release];
//旋转 UIRotationGestureRecognizer
UIRotationGestureRecognizer *rotate = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotateAction:)];
[imageView addGestureRecognizer:rotate];
UIRotationGestureRecognizer *rotate = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotateAction:)];
[imageView addGestureRecognizer:rotate];
[rotate release];
//平移 UIPanGestureRecognizer
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];
[imageView addGestureRecognizer:pan];
[pan release];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];
[imageView addGestureRecognizer:pan];
[pan release];
[self.view addSubview:imageView];
[imageView release];
// Do any additional setup after loading the view.
[imageView release];
// Do any additional setup after loading the view.
}
- (void)panAction:(UIPanGestureRecognizer *)pan {
//获取想要平移的视图
UIImageView *imageView = (UIImageView *)pan.view;
CGPoint p = [pan translationInView:imageView];
//改变视图的形变属性
imageView.transform = CGAffineTransformTranslate(imageView.transform, p.x, p.y);
[pan setTranslation:CGPointZero inView:imageView];
}
- (void)rotateAction:(UIRotationGestureRecognizer *)rotate {
//获取想要旋转的视图
UIImageView *imageView = (UIImageView *)rotate.view;
//改变imageView的形变属性
imageView.transform = CGAffineTransformRotate(imageView.transform, rotate.rotation);
rotate.rotation = 0;
// imageView.transform = CGAffineTransformMakeRotation(rotate.rotation);
}
- (void)pinchAction:(UIPinchGestureRecognizer *)pinch {
//获取要进行缩放的视图
UIImageView *imageView = (UIImageView *)pinch.view;
//改变imageView的形变属性
imageView.transform = CGAffineTransformScale(imageView.transform, pinch.scale, pinch.scale);
pinch.scale = 1;
// imageView.transform = CGAffineTransformMakeScale(pinch.scale, pinch.scale);
}
- (void)longpressAction:(UILongPressGestureRecognizer *)longpress {
//获取手势关联的视图
UIImageView *imageView = (UIImageView *)longpress.view;
//修改图片
[imageView setImage:[UIImage imageNamed:@"mao.jpg"]];
}
- (void)swipeAction:(UISwipeGestureRecognizer *)swipe {
//获取手势关联的视图
UIImageView *imageView = (UIImageView *)swipe.view;
//修改图片
[imageView setImage:[UIImage imageNamed:@"mao.jpg"]];
}
- (void)tapAction:(UITapGestureRecognizer *)tap {
//获取手势关联的视图
UIImageView *imageView = (UIImageView *)tap.view;
//修改图片
[imageView setImage:[UIImage imageNamed:@"mao.jpg"]];
}
//获取想要平移的视图
UIImageView *imageView = (UIImageView *)pan.view;
CGPoint p = [pan translationInView:imageView];
//改变视图的形变属性
imageView.transform = CGAffineTransformTranslate(imageView.transform, p.x, p.y);
[pan setTranslation:CGPointZero inView:imageView];
}
- (void)rotateAction:(UIRotationGestureRecognizer *)rotate {
//获取想要旋转的视图
UIImageView *imageView = (UIImageView *)rotate.view;
//改变imageView的形变属性
imageView.transform = CGAffineTransformRotate(imageView.transform, rotate.rotation);
rotate.rotation = 0;
// imageView.transform = CGAffineTransformMakeRotation(rotate.rotation);
}
- (void)pinchAction:(UIPinchGestureRecognizer *)pinch {
//获取要进行缩放的视图
UIImageView *imageView = (UIImageView *)pinch.view;
//改变imageView的形变属性
imageView.transform = CGAffineTransformScale(imageView.transform, pinch.scale, pinch.scale);
pinch.scale = 1;
// imageView.transform = CGAffineTransformMakeScale(pinch.scale, pinch.scale);
}
- (void)longpressAction:(UILongPressGestureRecognizer *)longpress {
//获取手势关联的视图
UIImageView *imageView = (UIImageView *)longpress.view;
//修改图片
[imageView setImage:[UIImage imageNamed:@"mao.jpg"]];
}
- (void)swipeAction:(UISwipeGestureRecognizer *)swipe {
//获取手势关联的视图
UIImageView *imageView = (UIImageView *)swipe.view;
//修改图片
[imageView setImage:[UIImage imageNamed:@"mao.jpg"]];
}
- (void)tapAction:(UITapGestureRecognizer *)tap {
//获取手势关联的视图
UIImageView *imageView = (UIImageView *)tap.view;
//修改图片
[imageView setImage:[UIImage imageNamed:@"mao.jpg"]];
}
posted on 2016-02-23 17:52 Walking_Jin 阅读(191) 评论(0) 编辑 收藏 举报