拖动并使用UIBezierPath IOS / Swift绘制一个矩形

时间:2016-03-09 11:16:37

标签: ios swift uibezierpath cashapelayer

我正在开发一个程序,该程序识别图像中的矩形并在该识别的矩形的边界上绘制路径。现在我想重新定位该路径,以防它不在确切的位置。举例来看这个图像

enter image description here

在这种情况下,我需要拖动路径的角落并重新定位它,因为它适合矩形。

要绘制路径,我使用了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添加手势。但是我没注意到这一点。无法找到与此有关的任何内容。那么有人可以让我知道一种方法来完成我的工作。任何帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

你是对的,没有办法将手势识别器附加到UIBezierPath。手势识别器附加到UIView个对象,UIBezierPath不是视图对象。

没有内置机制来执行此操作。你需要自己做。我建议建立一个类来处理它。创建一个矩形视图类。它将在内部使用贝塞尔曲线路径,并在顶点上放置4个角点视图,并在每个角点视图中安装平移手势识别器。

请注意,Cocoa矩形(CGRects)无法旋转。您需要使用一系列连接的线段并编写强制它保持正方形的逻辑。