iOS绘制线,两个箭头带有起始点,手指触摸结束并从开始或结束点旋转

我需要帮助制作绘图演示。

当用户使用他们的手指绘制线条时,该线条的两端都有方向箭头。 当他们的手指松开时,它会用“?”画线。 (问号)在线的中心。

然后,当用户点击“?”时,它将显示一个新视图,用户可以输入一个值,该值就在该行中。

我们可以在捕获图像上添加多行,也可以删除选定的行。

我不明白如何开始开发这些function所以请给我一个想法或任何链接,或建议开始开发此function。

在此处输入图像描述

您应该使用UITapGestureRecognizerUIBezierPath 。 拥有它让人在一点点击然后点击第二点,然后在两点之间制作一个UIBezierPath。 要在中间得到问号,你可以使它从第一个点到第一个点到第一个点到点2到20点之间距离的一半。 然后对线的另一半做同样的事情(这样你现在在线的中间有一个空格。

您可以利用Core Graphics Framework在iOS中绘制形状。 这允许你绘制线条,圆圈,箭头,矩形等。下面是一些示例代码,用于在2个点之间绘制一条线(取自: 如何在iPhone上绘制线条? ):

 CGContextRef c = UIGraphicsGetCurrentContext(); CGFloat red[4] = {1.0f, 0.0f, 0.0f, 1.0f}; CGContextSetStrokeColor(c, red); CGContextBeginPath(c); CGContextMoveToPoint(c, 5.0f, 5.0f); CGContextAddLineToPoint(c, 50.0f, 50.0f); CGContextStrokePath(c); 

首先定义UIView的子类以创建要绘制的空间。然后使用UITapGestureRecognizer来检测点击。 正如@WyattMufson 在他的回答中建议的那样 ,我会让用户点击一次以获得该线​​的起点,然后再次点击以获得终点。 这样做是为了确保只能绘制直线。

一旦有了起点和终点,就可以计算出中点并用“?”连接两点。 两者之间的性格。 然后将这些线坐标(起点,中点和终点)保存在某种数据结构中,以跟踪已绘制的所有线。

当用户点击特定行时,您可以使用保存的行坐标信息来检测是否在某行上发生了点击(您必须执行一些计算才能执行此操作)。 如果是,则显示接受用户输入的弹出窗口。 用户输入一个值后,关闭popover并替换’?’ 有了新的价值。

对于行删除,您可以使用UILongPressGestureRecognizer 。 用户将点击并按住绘制的行,这将弹出一个弹出窗口以确认用户是否要继续删除。 如果是,则访问保存的线坐标以检测是否在线上发生了保持。 如果是这样,擦除该行。

以下是一些可以帮助您入门的参考资料:

  • 如何使用UIKit制作简单的绘图应用程序
  • 如何在iPhone上画线?
  • 检查是一个点(x,y)是在直线上绘制的两个点之间
  • 如何从UIGestureRecognizer获取UITouch位置