iOS:在ImageView上绘制矩形并调整边框

附件1是一个名为GeniusScan的应用程序的截图,您可以在其中拍摄任何文档,并在图像视图中显示可调节的矩形网格。 您可以用手指轻松调整网格的边框,以select要扫描的图像部分。 它将被转化为正确的预期。

1-如何在imageview上绘制网格并与之交互?

2-如何将网格的angular点返回到我的视图控制器。

在这里输入图像说明

更新:我find了一个叫BJImageCropper的精美类,它允许使用手指来调整边界,但只能用于矩形框。 任何人都可以build议如何更新,以支持在GeniusScan应用程序的形状?

多德:

我创build了一个解决这两个问题的演示:

1-如何在imageview上绘制网格并与之交互?

通过添加4个视图,通过添加UIPanGestureRecognizer作为交互控制点,然后使用CAShapeLayer在视图顶部绘制网格。

2-如何将网格的angular点返回到我的视图控制器。

您必须保持对网格的四个控制点的引用。

这是我的代码的链接。

这实际上不是在UIImageView之上绘图。 这实际上是在UIImageView顶部的覆盖(视图)。 你需要跟踪4个点(有4个视图作为图层的子视图),跟踪他们的位置,一旦移动,使用drawRect:根据4个drawRect:线。

我在我的应用程序中实现它的方式是,我用一个透明的“SelectionView”(我写的自定义视图)覆盖UIImageView。 selectionView包含4个“顶点”类的自定义子视图。 每次用户触摸/移动它时,顶点都会通过协议方法与selectionView交谈(实际上移动顶点并不重要)

 - (void)vertexMoved:(Vertex *)vertex; 

然后selectionView知道它需要重新绘制,所以它调用setNeedsDisplay调用内部调用drawRect (你永远不应该调用drawRect )在哪里做边界矩形的实际绘制。 基本上,遍历每个顶点,并使用Quartz API绘制一条线,并填充半透明/空心颜色。

我至less这样做,我相信还有其他的方法。