问题描述
附件 1 是一个名为Geniusscan的应用程序的屏幕截图文档和可调节的矩形网格显示在图像视图上.您可以轻松地用手指调整网格的边界,以选择要扫描的图像的部分.然后将其转换为正确的前瞻性.
1-如何绘制图像视图上的网格并进行交互?
2-如何将网格的角点返回到视图控制器.
更新:我找到了一个名为bjimagecropper的精彩课程,它允许手指伸向边界,但仅适用于像矩形这样的盒子.谁能建议如何将其更新以支持Geniusscan应用中的形状?
推荐答案
花花公子:
我创建了一个解决这两个问题的演示:
1-如何绘制图像视图上的网格并进行交互?
通过添加4个视图,这些视图将通过添加UipangeStureregognizer,然后在视图顶部使用CashApelayer绘制网格.
.2-如何将网格的角点返回到视图控制器.
您必须对网格的四个控制点进行参考.
这是我的代码.
其他推荐答案
这实际上并不是在UIImageView的顶部绘制.它实际上是UIImageView顶部的叠加层(视图).您需要跟踪4分(具有4个视图作为图层的子视图),跟踪其位置,一旦移动,使用drawRect:根据4分绘制线路.
我在应用程序中实现它的方式是,我用透明的" selectionView"覆盖了UIImageView(我编写的自定义视图). SelectionView包含4个"顶点"类的自定义子视图.每次用户触摸/移动它时,VERTEX通过协议方法回到SelectionView(实际上并不重要的是哪个顶点移动,只是它移动了):
- (void)vertexMoved:(Vertex *)vertex;
然后,selectionView知道它需要重新绘制,因此它调用setNeedsDisplay setNeedsDisplay在内部调用drawRect(您绝不应该调用drawRect),我在其中进行界限rect的实际绘制.基本上,通过每个顶点迭代并使用石英API绘制一条线,并用半透明/空心颜色填充.
这就是我至少这样做的方式,我相信还有其他方法.