iphone cocoa:如何沿路径拖动图像

时间:2009-05-21 09:08:22

标签: iphone cocoa-touch drag-and-drop core-animation

我试图找出如何在限制其沿某条路径移动的同时拖动图像。

我尝试了一些技巧,包括沿路径播放的动画,但无法播放动画,暂停和播放 - 所以这似乎是不可能的。

有什么想法吗?有谁?

2 个答案:

答案 0 :(得分:3)

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

当用户触摸并开始移动他们的手指时,您希望使用当前触摸点值来创建应用于UIImageView的翻译变换。这是你如何做到的:

  1. 在降落时,保存imageview的x,y位置。

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

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

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

  5. 在网格上移动也很容易。只需将第2步中的x,y值四舍五入,使它们成为网格大小的倍数(即舍入到每10个像素),然后再将其传递以进行平移变换。

    如果您想使其更加流畅,请使用UIView动画块围绕指定转场的代码。随着缓和和时间设置混乱。图像应该稍微向后拖动,但是从一个触摸点到另一个触摸点平滑地“橡皮筋”。

答案 1 :(得分:1)

请参阅此示例代码:Move Me