如何根据用户拖动视图,沿曲线CGPath移动UIView

5
我正在尝试构建一个接口,用户可以在屏幕上移动手指,一组图像沿着路径移动。想法是图像中心永远不会离开路径。我找到的大部分内容都是关于如何使用CGPath进行动画制作,而不是实际将路径用作用户移动的轨迹。如果对象位于路径的起点,并且用户在屏幕上的任何位置触摸并向右移动手指,我需要该对象向右移动,但是仍顺着路径向上移动,直到到达路径的终点。这是我绘制的路径,假设我有一个视图(任何图像),用户可以触摸并沿路径拖动它,无需精确地在路径上移动手指即可。如果用户从左到右移动,则图像应该从左到右移动,但如果需要,可以沿着路径向上移动。以下是我的路径创建方式:
   CGPoint endPointUp = CGPointMake(315, 124);
    CGPoint endPointDown = CGPointMake(0, 403);
    CGPoint controlPoint1 = CGPointMake(133, 187);
    CGPoint controlPoint2 = CGPointMake(174, 318);

    CGMutablePathRef path = CGPathCreateMutable();
    CGPathMoveToPoint(path, NULL, endPointUp.x, endPointUp.y);
    CGPathAddCurveToPoint(path, NULL, controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y, endPointDown.x, endPointDown.y);

有什么办法可以实现这个吗?

最好在http://gamedev.stackexchange.com/上提问。 - DarkLeafyGreen
刚刚完成了这个任务 http://gamedev.stackexchange.com/questions/13771/how-to-move-an-uiview-along-a-curved-cgpath-according-to-user-dragging-the-view - Felipe Cypriano
你能加上代码展示如何解决那个问题吗?我也遇到了同样的问题。 - Manjit Singh
1个回答

0

你可以获取一个绘制图形的数学函数,然后沿着这个轨迹对象移动。


有什么数学函数的想法吗? - Felipe Cypriano
例如,看正弦曲线方程(图)或看二次方程(图)。 - Invader
谢谢,我会搜索这些方程式。但如果您有任何类似的算法,我会非常感激。 - Felipe Cypriano
我只有抛物线的算法。 - Invader
我刚刚完成了一个三次贝塞尔曲线的算法,而且它成功了。 :) - Felipe Cypriano
当我需要沿着运动的弧线进行制作时,我只是不知道贝塞尔曲线 :( - Invader

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接