美文网首页
使用UIPanGestureRecognizer实现类似于微信剪

使用UIPanGestureRecognizer实现类似于微信剪

作者: 逆世界开发者 | 来源:发表于2020-12-24 08:44 被阅读0次

第一步先声明一个拖拽手势:

UIPanGestureRecognizer *imgPan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(imgPangestureMethod:)];

[self.contenImg addGestureRecognizer:imgPan];

    imgPan.delegate=self;

-(void)imgPangestureMethod:(UIPanGestureRecognizer *)pan{   

CGPoint translation = [pan translationInView:self.contenImg];   

CGPoint local = [pan locationInView:self.contenImg];   

NSLog(@"%fqqq---qqq%f",local.x,local.y);   

CGPoint beginPoint = CGPointMake(0, 0);   

if (pan.state==UIGestureRecognizerStateBegan) {       

beginPoint = local;       

self.pyOperateViewDrawRedFrameBegin_block(local);   

}else if(pan.state==UIGestureRecognizerStateChanged){        self.pyOperateViewDrawRedFrame_block(CGSizeMake(translation.x, translation.y),local);    }else if(pan.state==UIGestureRecognizerStateEnded){        self.PYOperateViewDrawRedFrameEnd_block();   

}   

[pan setTranslation:CGPointZero inView:self.contenImg];    

}

第二步使用view来实现画红色矩形框:

//画红框 

  __block NSMutableArray * redFramViewArr = [NSMutableArray array];    self.pyOperateView.pyOperateViewDrawRedFrameBegin_block = ^(CGPoint beginPoint) {//开始画        

@strongify(self)        

JBY_RedFrameView *redFrameView = [[JBY_RedFrameView alloc] initWithFrame:CGRectMake(beginPoint.x, beginPoint.y, 0, 0 )];       

redFrameView.beginPoint = beginPoint;       

[redFramViewArr addObject:redFrameView];       

[self.pyOperateView.contenImg addSubview:redFrameView];   

};    

self.pyOperateView.pyOperateViewDrawRedFrame_block = ^(CGSize size, CGPoint localPoint) {//正在画        

@strongify(self)        

JBY_RedFrameView *redFrameView = [redFramViewArr lastObject];        

float width = redFrameView.size.width;        

float height = redFrameView.size.height;        

if (redFrameView.beginPoint.y>localPoint.y) {           

redFrameView.frame = CGRectMake(redFrameView.beginPoint.x, localPoint.y,width + size.width, redFrameView.beginPoint.y-localPoint.y);       

}else{           

redFrameView.frame = CGRectMake(redFrameView.beginPoint.x, redFrameView.beginPoint.y, width + size.width, localPoint.y-redFrameView.beginPoint.y);       

}        

if (redFrameView.beginPoint.x>localPoint.x) {           

redFrameView.frame = CGRectMake(localPoint.x, localPoint.y,redFrameView.beginPoint.x-localPoint.x, redFrameView.beginPoint.y-localPoint.y);       

}else{           

redFrameView.frame = CGRectMake(redFrameView.beginPoint.x, redFrameView.beginPoint.y, localPoint.x - redFrameView.beginPoint.x, localPoint.y-redFrameView.beginPoint.y);       

}   

};    

self.pyOperateView.PYOperateViewDrawRedFrameEnd_block = ^{//结束画           

};

相关文章

网友评论

      本文标题:使用UIPanGestureRecognizer实现类似于微信剪

      本文链接:https://www.haomeiwen.com/subject/dzvpnktx.html