【问题标题】:iphone cocoa : how to drag an image along a pathiphone cocoa:如何沿路径拖动图像
【发布时间】:2010-10-27 21:07:44
【问题描述】:

我试图弄清楚如何在限制图像沿特定路径移动的同时拖动图像。

我尝试了几种技巧,包括沿路径制作动画,但无法让动画播放、暂停和向后播放 - 所以这似乎是不可能的。

有什么想法吗?有人吗?

【问题讨论】:

  • 嘿..你知道怎么做吗..
  • 嘿,你知道了吗,请帮助我,我遇到了和你一样的问题。

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


【解决方案1】:

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

当用户触摸并开始移动他们的手指时,您希望使用当前的触摸点值来创建一个平移变换,并将其应用于您的UIImageView。以下是你的做法:

  1. 触摸时,保存图像视图的起始 x,y 位置。

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

  3. 一旦有了“新的”计算/固定的 x,y 值,就可以使用它来使用CGAffineTransformMakeTranslation(x, y) 创建一个新的变换。将此转换分配给 UIImageView。图像移动到那个地方。

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

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

如果您想让它更加流畅,请在您分配过渡的代码周围加上 UIView 动画块。弄乱缓动和时间设置。图像应该从一个触摸点平滑地拖到下一个触摸点。

【讨论】:

  • 是的,听起来不错,不过您可能只想设置 position 而不是搞乱转换。
【解决方案2】:

查看此示例代码:Move Me

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 2011-08-20
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多