第一步先声明一个拖拽手势:
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你可...