我试图找出如何在限制其沿某条路径移动的同时拖动图像。
我尝试了一些技巧,包括沿路径播放的动画,但无法播放动画,暂停和播放 - 所以这似乎是不可能的。
有什么想法吗?有谁?
答案 0 :(得分:3)
您基本上要做的是将手指移动与“翻译”过渡相匹配。
当用户触摸并开始移动他们的手指时,您希望使用当前触摸点值来创建应用于UIImageView
的翻译变换。这是你如何做到的:
在降落时,保存imageview的x,y位置。
在移动时,计算从旧点到新点的增量。这是您可以限制值的地方。所以你可以忽略y变化,只使用x增量。这意味着图像只会从左向右移动。如果忽略x并使用y,则它只会上下移动。
获得'新'计算/钳制的x,y值后,使用它来创建使用CGAffineTransformMakeTranslation
(x,y)的新变换。将此转换分配给UIImageView。图像移动到那个地方。
一旦手指抬起,从原始起始点x,y,点和抬起点计算出增量,然后调整ImageView的边界并将变换重置为CGAffineTransformIdentity
。这不会移动对象,但它会设置它,以便后续访问ImageView使用实际位置,而不必继续调整变换。
在网格上移动也很容易。只需将第2步中的x,y值四舍五入,使它们成为网格大小的倍数(即舍入到每10个像素),然后再将其传递以进行平移变换。
如果您想使其更加流畅,请使用UIView动画块围绕指定转场的代码。随着缓和和时间设置混乱。图像应该稍微向后拖动,但是从一个触摸点到另一个触摸点平滑地“橡皮筋”。
答案 1 :(得分:1)
请参阅此示例代码:Move Me