UI_UIGestureRecognizer(触摸手势)

来源:互联网 发布:大唐电信数据所招聘 编辑:程序博客网 时间:2024/06/05 21:12

1..所有的触摸手势的父类是UIGestureRecognizer,但我们平时都用它的每个单独的子类,包含点击,拖拽,捏合,拖动等,

2..
- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.    self.view.backgroundColor =[UIColor lightGrayColor];        NSArray *imageArr =@[@"0",@"1.jpg",@"3.jpeg"];        for (int i=0;i<imageArr.count; i++)    {        UIImageView *imgV =[[UIImageView alloc]initWithFrame:CGRectMake(10, 40+i*130, 100, 100)];        imgV.image =[UIImage imageNamed:imageArr[i]];        imgV.userInteractionEnabled=YES;                [self addGesture:imgV];                [self.view addSubview:imgV];    }    }-(void)addGesture:(UIView*)view{    //点(单击)手势    UITapGestureRecognizer *tapGes =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapGr:)];    tapGes.numberOfTapsRequired    = 2;//设置点击次数    tapGes.numberOfTouchesRequired = 1;//设置手指数    [view addGestureRecognizer:tapGes];    //拖拽移动手势    UIPanGestureRecognizer *panGes =[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panGr:)];    [view addGestureRecognizer:panGes];    //捏合手势    UIPinchGestureRecognizer *pinchGes =[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGr:)];    [view addGestureRecognizer:pinchGes];    //旋转手势    UIRotationGestureRecognizer *rotationGes =[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotation:)];    [view addGestureRecognizer:rotationGes];    //长按手势    UILongPressGestureRecognizer *longGes =[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longG:)];    [view addGestureRecognizer:longGes];    //轻扫手势(和拖拽手势有冲突)默认为右 加一个方向,实例化一个轻扫手势 设置swipe.direction方向//    UISwipeGestureRecognizer *swipe =[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipe:)];//    swipe.direction                = UISwipeGestureRecognizerDirectionUp;//    [view addGestureRecognizer:swipe];    }#pragma mark 单击//传的参数就是手势本身-(void)tapGr:(UITapGestureRecognizer *)tapGr{// tapGr.view 响应手势的视图//点击旋转    tapGr.view.transform =CGAffineTransformRotate(tapGr.view.transform, M_PI_2);}#pragma mark 拖拽移动-(void)panGr:(UIPanGestureRecognizer*)panGr{    //获取手势移动的坐标    CGPoint move =[panGr translationInView:self.view];    //当前的中心点加上移动的坐标    panGr.view.center =CGPointMake(panGr.view.center.x +move.x, panGr.view.center.y +move.y);    //每次动都会累加 每次动都得清零    [panGr setTranslation:CGPointZero inView:self.view];    }#pragma mark 捏合手势-(void)pinchGr:(UIPinchGestureRecognizer*)pinchGs{    //响应的View的改变 (利用 比例 修改大小)  一参是修改前的形态  二参是横向.比例  三参是纵向.比例    pinchGs.view.transform =CGAffineTransformScale(pinchGs.view.transform, pinchGs.scale, pinchGs.scale);        //设置比例为1    pinchGs.scale =1;    }#pragma mark 旋转-(void)rotation:(UIRotationGestureRecognizer*)rotationGR{    rotationGR.view.transform = CGAffineTransformRotate(rotationGR.view.transform, rotationGR.rotation);    //旋转的倍数    rotationGR.rotation =1;    }#pragma mark 长按手势-(void)longG:(UILongPressGestureRecognizer*)longGr{//longGr.state 当前手势的状态        //长按手势会被多次调用,使用候需要判断状态    //长按刚一生效调用    if(longGr.state ==UIGestureRecognizerStateBegan)    {        //创建一个核心动画        CABasicAnimation *basicA =[CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];                //动画起始角度        basicA.fromValue = @0;        //结束角度        basicA.toValue =@(M_PI*5);        //完成一次时间        basicA.duration =1;        //一次完成后的是否动画还原        basicA.autoreverses =YES;        //动画次数        basicA.repeatCount =10;        //添加到 View的layer层        [longGr.view.layer addAnimation:basicA forKey:@"ii"];                //key用来取消        // [longGr.view.layer  removeAnimationForKey:@"ii"];            }    }#pragma mark 轻扫手势-(void)swipe:(UISwipeGestureRecognizer *)swipe{    //判断轻扫手势的方向    if(swipe.direction ==UISwipeGestureRecognizerDirectionRight)    {        NSLog(@"向右扫");        CGRect rect =swipe.view.frame;        rect.origin.x +=10;        swipe.view.frame =rect;    }        // & 按位与  direction向上    if (swipe.direction & UISwipeGestureRecognizerDirectionUp) {        CGRect rect = swipe.view.frame;        rect.size.height += 10;        rect.origin.y -= 10;        swipe.view.frame = rect;    }    }

0 0
原创粉丝点击