Gesture(手势旋转图片,缩放图片,touch图片处理相关事件)

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIImage *img = [UIImage imageNamed:@"iphone.png"];
    UIImageView *imageView = [[UIImageView alloc]initWithImage:img];
    imageView.frame = CGRectMake(100, 100, 200, 200);
    [self.view addSubview:imageView];

   

    //重要!其中交换功能

    imageView.userInteractionEnabled = YES;
   
    
    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)];
    tapGestureRecognizer.numberOfTouchesRequired = 1;
    tapGestureRecognizer.numberOfTapsRequired = 1;
    [imageView addGestureRecognizer:tapGestureRecognizer];
    
    //添加拖动手势
    UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];
    [imageView addGestureRecognizer:panGestureRecognizer];
    
    //添加捏合缩放手势
    UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(handlePinch:)];
    [imageView addGestureRecognizer:pinchGestureRecognizer];
    
    
    //添加旋转手势
    UIRotationGestureRecognizer *rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(handleRotation:)];
    [imageView addGestureRecognizer:rotationGestureRecognizer];
}

#pragma mark - 单击手势
- (void)handleTap:(UITapGestureRecognizer *)recognizer
{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"message" message:@"你单击了图片" delegate:nil cancelButtonTitle:@"yes" otherButtonTitles: nil];
    [alert show];
    
}

#pragma mark - 拖动手势
- (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];
    
    
    //使用 CGAffineTransformMakeTranslation 函数创建一个仿射位移变换(affine translation transformation)。将被绘制到图形环境上的一切,到一个新的位置,而不需要修改你的绘图代码。
//    recognizer.view.transform = CGAffineTransformMakeTranslation(recognizer.view.center.x, recognizer.view.center.y);
}

#pragma mark - 双指捏合,模拟器上按住Option模拟
- (void)handlePinch:(UIPinchGestureRecognizer *)recognizer
{
    //transform为仿射变换 可以用于 平移、旋转、缩放变换路径 或者图形上下文
    //CGAffineTransformScale为创建一个给定缩放比例的变换
    recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
    
    //重置
    recognizer.scale = 1;
}

- (void)handleRotation:(UIRotationGestureRecognizer *)recognizer
{
    //CGAffineTransformRotate创建一个给定角度旋转的变换
    recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);
    recognizer.rotation = 0;
}


@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值