1、轻拍手势:双指、单击,修改imageView的frame为(0,0,320,200)
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