2009-05-21 62 views
1

我想弄清楚如何拖动图像,同时限制其沿着特定路径的移动。iphone可可:如何沿着路径拖动图像

我尝试了几个技巧,包括沿着一条路径的动画,但无法让动画播放,暂停和向后播放 - 这似乎是不可能的。

任何想法?任何人 ?

+0

Hey..did你想通了如何做到这一点.. – 2013-06-12 08:28:11

+0

嘿你想通了,请帮助我,我有同样的问题像你有。 – 2014-06-11 06:52:12

回答

3

你基本上试图做的是将手指移动与“翻译”过渡相匹配。

随着用户触摸并开始移动手指,您希望使用当前的触点值创建一个应用于您的UIImageView的转换转换。以下是你如何做到这一点:

  1. 在触及下来,保存imageview的开始x,y位置。

  2. 移动时,计算从旧点到新点的增量。这是你可以钳制值的地方。所以你可以忽略,比如y变化,只使用x deltas。这意味着图像只会从左向右移动。如果您忽略x并使用y,那么它只会上下移动。

  3. 一旦你有'新'计算/钳制的x,y值,使用它来使用CGAffineTransformMakeTranslation(x,y)创建一个新的变换。将此转换分配给UIImageView。图像移动到那个地方。

  4. 一旦手指抬起,从原始的起点x,y,点和剥离点找出增量,然后调整ImageView的边界并将变换重置为CGAffineTransformIdentity。这不会移动对象,但会设置它,以便后续对ImageView的访问使用实际位置,而不必为变换保留调整。

沿网格上的运动是一件容易的事。只需在步骤2中舍入x,y值,使它们成为网格大小的倍数(即循环到每10个像素),然后再传递它以进行转换转换。

如果您想使其更加平滑,请使用UIView动画块为代码分配过渡代码。应对宽松和时间设置。图像应该稍微拖后,但是从一个接触点到另一个接触点平滑地“橡皮筋”。

1

看到这个示例代码:Move Me