1、轻拍手势:双指、单击,修改imageView的frame为(0,0,320,200)
2、长按手指:单指,修改imageView的alpha=0.5
3、实现平移、旋转、捏合
4、轻扫:竖向轻扫实现图:像随机切换显示;横向轻扫实现:图像消失,随机修改imageview的背景颜色
2、长按手指:单指,修改imageView的alpha=0.5
3、实现平移、旋转、捏合
4、轻扫:竖向轻扫实现图:像随机切换显示;横向轻扫实现:图像消失,随机修改imageview的背景颜色
5、imageview每次只能添加一种手势识别器。
#define _originalRect CGRectMake(10, 50, 300, 450)
#define _originalImageName @"h4.jpeg"
#import "HMTRootViewController.h"
@interface HMTRootViewController (){
UITapGestureRecognizer * _tapGesture;
UILongPressGestureRecognizer * _longGesture;
UIPanGestureRecognizer * _panGesture;
UIRotationGestureRecognizer * _rotateGesture;
UIPinchGestureRecognizer * _pinchGesture;
UISwipeGestureRecognizer * _verticalSwipeGesture;
UISwipeGestureRecognizer * _horizontanlSwipeGesture;
BOOL isTopDownOfRightLeft; // 垂直滑动是YES,水平滑动是NO
}
@property (nonatomic,retain) UIButton * button;
@property (nonatomic,retain) UIImageView * imageView;
@end
@implementation HMTRootViewController
- (void)dealloc{
RELEASE_SAFELY(_imageView);
RELEASE_SAFELY(_button);
[super dealloc];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
isTopDownOfRightLeft = YES;
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self createButtonView];
[self createImageView];
}
#pragma mark - 设置图像
- (void)createImageView{
self.imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:_originalImageName]];
_imageView.frame = CGRectMake(10, 50, 300, 450);
_imageView.userInteractionEnabled = YES;
[self.view addSubview:_imageView];
[_imageView release];
}
#pragma mark - 设置手势
#pragma mark 点击手势
- (void)createTapGestureRecognizer{
_tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(TapGestureRecognizer:)];
_tapGesture.numberOfTapsRequired = 1;
_tapGesture.numberOfTouchesRequired = 2;
[self.imageView addGestureRecognizer:_tapGesture];
[_tapGesture release];
}
- (void)TapGestureRecognizer:(UITapGestureRecognizer *)tapGesture{
self.imageView.frame = CGRectMake(0, 0, 320, 200);
NSLog(@"%@",NSStringFromCGRect(self.imageView.frame));
}
#pragma mark 长按手势
- (void)createLongGestureRecognizer{
_longGesture = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longGestureRecognizer:)];
_longGesture.numberOfTouchesRequired = 1;
_longGesture.minimumPressDuration = 1.0;
[self.imageView addGestureRecognizer:_longGesture];
[_longGesture release];
}
- (void)longGestureRecognizer:(UILongPressGestureRecognizer *)longGesture{
self.imageView.alpha = 0.5;
NSLog(@"%s",__FUNCTION__);
}
#pragma mark 平移拖拽手势
- (void)createPanGestureRecognizer{
_panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGestureRecognizer:)];
[self.imageView addGestureRecognizer:_panGesture];
[_panGesture release];
}
- (void)panGestureRecognizer:(UIPanGestureRecognizer *)panGesture{
NSLog(@"%s",__FUNCTION__);
CGPoint txty = [panGesture translationInView:self.view];
self.imageView.transform = CGAffineTransformTranslate(self.imageView.transform, txty.x, txty.y);
[panGesture setTranslation:CGPointMake(0, 0) inView:self.view];
}
#pragma mark 旋转手势
- (void)createRotationGestureRecognizer{
_rotateGesture = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationGestureRecognizer:)];
[self.imageView addGestureRecognizer:_rotateGesture];
[_rotateGesture release];
}
- (void)rotationGestureRecognizer:(UIRotationGestureRecognizer *)rotateGesture{
NSLog(@"%s",__FUNCTION__);
self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, rotateGesture.rotation);
rotateGesture.rotation = 0;
}
#pragma mark 捏合缩放手势
- (void)createPinchGestureRecognizer{
_pinchGesture = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGestureRecognizer:)];
[self.imageView addGestureRecognizer:_pinchGesture];
[_pinchGesture release];
}
- (void)pinchGestureRecognizer:(UIPinchGestureRecognizer *)pinchGesture{
NSLog(@"%s",__FUNCTION__);
self.imageView.transform = CGAffineTransformScale(self.imageView.transform, pinchGesture.scale, pinchGesture.scale);
pinchGesture.scale = 1;
}
#pragma mark - 轻扫手势
#pragma mark 上下 竖 垂直轻扫
- (void)createVerticalSwipeGestureRecognizer{
_verticalSwipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeGestureRecognizer:)];
_verticalSwipeGesture.direction = UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown;
[self.imageView addGestureRecognizer:_verticalSwipeGesture];
[_verticalSwipeGesture release];
}
#pragma mark 水平 左右轻扫
- (void)createHorizontanlSwipeGesture{
_horizontanlSwipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeGestureRecognizer:)];
_horizontanlSwipeGesture.direction = UISwipeGestureRecognizerDirectionLeft |UISwipeGestureRecognizerDirectionRight;
[self.imageView addGestureRecognizer:_horizontanlSwipeGesture];
}
- (void)swipeGestureRecognizer:(UISwipeGestureRecognizer *)swipeGesture{
NSLog(@"%s",__FUNCTION__);
if (swipeGesture.direction == (UISwipeGestureRecognizerDirectionUp|UISwipeGestureRecognizerDirectionDown)) {
self.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"h%i.jpeg",arc4random()%7+1]];
;
}else if (swipeGesture.direction == (UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight)){
self.imageView.image = nil;
self.imageView.backgroundColor = [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.0];
}
}
#pragma mark - 设置按钮
- (void)createButtonView{
NSArray * buttonArray = @[@"轻点",@"长按",@"平移",@"旋转",@"捏合",@"轻扫"];
for (int i = 0; i < [buttonArray count]; i++) {
self.button = [UIButton buttonWithType:UIButtonTypeSystem];
_button.frame = CGRectMake(10+50*i, 500, 50, 48);
[_button setTitle:[buttonArray objectAtIndex:i] forState:UIControlStateNormal];
[_button addTarget:self action:@selector(onClikButton:) forControlEvents:UIControlEventTouchUpInside];
_button.tag = i;
[self.view addSubview:_button];
}
}
- (void)onClikButton:(UIButton *)button{
[self resetImageView];
switch (button.tag) {
case 0:
[self createTapGestureRecognizer];
break;
case 1:
[self createLongGestureRecognizer];
break;
case 2:
[self createPanGestureRecognizer];
break;
case 3:
[self createRotationGestureRecognizer];
break;
case 4:
[self createPinchGestureRecognizer];
break;
case 5:
if (isTopDownOfRightLeft == YES) {
[self createVerticalSwipeGestureRecognizer];
isTopDownOfRightLeft = NO;
} else {
[self createHorizontanlSwipeGesture];
isTopDownOfRightLeft = YES;
}
break;
default:
break;
}
}
#pragma mark - 重置imageView
- (void)resetImageView
{
for (int i = 0; i < [self.imageView.gestureRecognizers count]; i++) {
[self.imageView removeGestureRecognizer:[self.imageView.gestureRecognizers objectAtIndex:i]];
}
self.imageView.alpha = 1.0;
self.imageView.transform = CGAffineTransformIdentity;
self.imageView.frame = _originalRect;
self.imageView.image = [UIImage imageNamed:_originalImageName];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end