第一步先声明一个拖拽手势:
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 = ^{//结束画
};
网友评论