ios开发手势处理之手势识别二
阅读原文时间:2023年07月16日阅读:2

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageV;

@end

@implementation ViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.imageV.userInteractionEnabled = YES;

    //添加旋转手势
    [self rotationGes];

    //添加捏合手势
    [self pinch];

}

//Simultaneous:同时
//是否允许同时支持多个手势
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{

return YES;  

}

//添加旋转手势

  • (void)rotationGes{
    //添加旋转手势
    UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGes:)];

    rotation.delegate = self;

    [self.imageV addGestureRecognizer:rotation];
    }

  • (void)rotationGes:(UIRotationGestureRecognizer *)rotationGes{

    self.imageV.transform = CGAffineTransformRotate(self.imageV.transform, rotationGes.rotation);

    //复位
    [rotationGes setRotation:];

}

//添加捏合手势

  • (void)pinch{

    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch:)];
    pinch.delegate = self;
    [self.imageV addGestureRecognizer:pinch];
    }

//当缩放时调用

  • (void)pinch:(UIPinchGestureRecognizer *)pinch{
    NSLog(@"%s",__func__);
    self.imageV.transform = CGAffineTransformScale(self.imageV.transform, pinch.scale,pinch.scale );

    //复位
    [pinch setScale:];
    }

  • (void)panGes{
    //添加拖动手势
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
    [self.imageV addGestureRecognizer:pan];
    }

//当拖动View时调用

  • (void)pan:(UIPanGestureRecognizer *)pan {

    //获取偏移量(相对于最原始的偏移量)
    CGPoint transP = [pan translationInView:self.imageV];
    NSLog(@"%@",NSStringFromCGPoint(transP));

    self.imageV.transform = CGAffineTransformTranslate(self.imageV.transform, transP.x, transP.y);

    //让它相对于上一次
    //复位.
    [pan setTranslation:CGPointZero inView:self.imageV];

}

@end

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章