我正在开发一个程序,该程序识别图像中的矩形并在该识别的矩形的边界上绘制路径。现在我想重新定位该路径,以防它不在确切的位置。举例来看这个图像
在这种情况下,我需要拖动路径的角落并重新定位它,因为它适合矩形。
要绘制路径,我使用了CAShapeLayer和UIBezierPath。这是我用来绘制路径的代码。
// imgView is the UIImageView which contains the image with the rectangle
let line: CAShapeLayer = CAShapeLayer();
line.frame = imgView.bounds;
let linePath: UIBezierPath = UIBezierPath();
linePath.moveToPoint(CGPointMake(x1, y1);
linePath.addLineToPoint(CGPointMake(x2, y2);
linePath.addLineToPoint(CGPointMake(x3, y3);
linePath.addLineToPoint(CGPointMake(x4, y4);
linePath.addLineToPoint(CGPointMake(x1, y1);
linePath.closePath();
line.lineWidth = 5.0;
line.path = linePath.CGPath;
line.fillColor = UIColor.clearColor().CGColor;
line.strokeColor = UIColor.blueColor().CGColor;
imgView.layer.addSublayer(line);
事情是我试图向UIBezierPath添加手势。但是我没注意到这一点。无法找到与此有关的任何内容。那么有人可以让我知道一种方法来完成我的工作。任何帮助将受到高度赞赏。
答案 0 :(得分:1)
你是对的,没有办法将手势识别器附加到UIBezierPath
。手势识别器附加到UIView
个对象,UIBezierPath
不是视图对象。
没有内置机制来执行此操作。你需要自己做。我建议建立一个类来处理它。创建一个矩形视图类。它将在内部使用贝塞尔曲线路径,并在顶点上放置4个角点视图,并在每个角点视图中安装平移手势识别器。
请注意,Cocoa矩形(CGRects)无法旋转。您需要使用一系列连接的线段并编写强制它保持正方形的逻辑。