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

时间:2014-06-26 06:12:38

标签: ios iphone drawing uigesturerecognizer uitouch

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

当用户用手指画线时, 该线两端都有方向箭头。 当他们的手指释放时,它会画出线条 "" (问号)在线的中心。

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

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

我不明白如何才能开始开发这些功能 请给我一个想法或任何链接,或建议开始发展这个 特征。

enter image description here

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

您可以利用Core Graphics Framework在iOS中绘制形状。这允许您绘制直线,圆,箭头,矩形等。以下是一些示例代码,用于在2个点之间绘制一条直线(取自:How do I draw a line on the 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 suggested in his answer,我会让用户点击一次以获得该行的起点,然后再次点击以获得终点。这样做是为了确保只能绘制直线。

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

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

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

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