2011-09-18 63 views
0

好吧,我有一个视图,第一,我希望只要用户触摸视图(在这种情况下的矩形),并开始拖动一条线应该是绘制,遵循手指的路径。后来,当我调用特定方法时,我希望视图遵循该行,当然该行消失。用手指画一条线,并制作一个UIView按照它

我绘制的思路:

  1. 添加UIPanGestureRecognizer到视图,然后AddLineToContext,然后绘制它。
  2. 使用touchesBegan等方法。但后来,我在那里有多个视图,我需要找出用户触摸哪一个。 (玩得开心,会有1到15 ...)

而且我还不知道其他的事情。

回答

1

为了绘制路径,您正处于正确的轨道上。我会使用你有两个选项中的手势识别器。

为了让矩形沿着路径走,我能想到的最简单的方法是为每个传递槽的点保留一个x和y的数组(不要忘记删除连续的重复项)。

所以,现在你有一个描述路径的形状,你可以启动一个定时器,或更好地利用CADisplayLink,将矩形的位置设置为每个阵列中的点的点的数组。这将使矩形沿着路径。

如果您希望矩形也遵循方向,您将需要使用vectors来描述矩形应该在的方向。

首先,你需要计算矩形的位置和它应该去下一个使用点之间的距离: distance formula 那么,当你知道的距离,你可以使用arcsine让你的方向角。然后只需按该值旋转矩形。

小心角度表示(pi vs度)和坐标系统。

+1

使用带有路径('CGPathRef')的CAKeyframeAnimation会容易得多。它完成了计算点之间距离的繁重工作(当您需要非线性动画曲线时,这会变得复杂)。对于绘图,可以使用“CAShapeLayer”。 – omz

+1

如果有这样的事情,你说得对,应该使用它。我可以争论是否容易,但这超出了问题的范围。我没有用Quartz玩过很多,我的回答是基于我在其他环境中的经验。确实,对于非线性动画曲线来说,事情可能会变得更加复杂一些,但是您也可以完全控制加速和减速(取决于位置),所以它很大程度上取决于您想要在我的谦虚中实现的目标意见。 –