第一步先声明一个拖拽手势:
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实现类似于微信剪切里边的矩形框
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- UIViewPropertyAnimator是iOS的新特性,通过UIViewPropertyAnimator你可...