2012-10-01 148 views
4

我有一个图像。我想沿路径拖动该图像。路径可以是圆形或矩形形状。如果图像被触摸并拖动,它应该只沿着路径行进,不应该离开路径。我尝试过使用Core Graphics和Core动画,但找不到正确的方法。我在网上搜索过,但总是显示如何沿着路径移动物体。找不到任何有关沿路径拖动对象的信息。此外,我发现他们是Apple提供的NO方法,用于从UIBezierPath中提取点。沿Iphone路径拖动

他们无论如何都这么做?

+0

为什么这个问题标签为Android? Android版Core-Grapics或Core-Animation都不可用。由于API不同,您可能无法获得与两个平台相匹配的单个答案。 –

+0

对不起。我编辑过它。太好奇了。 –

+0

用户是沿相同路径拖动还是只是在屏幕上拖动? –

回答

0

UIBezierPath类有一个名为- (BOOL)containsPoint:的实例方法。使用此方法和2 UIBezierPath,您可以检查对象是否沿着路径移动。

+---------+ 
|xxxxxxxxx| 
|x+-----+x| 
|x|  |x| 
|x|  |x| 
|x|  |x| 
|x+-----+x| 
|xxxxxxxxx| 
+---------+ 

这里的技巧是让1条路径比第一条(也许2像素)略小,同时确保两条路径有一个共同的中心。您的对象现在必须移动的路径/路线将是您从调用- (BOOL)containsPoint:获得的贝塞尔路径区域的差异。

如果您的对象包含在大UIBezierPath内,但不包含在小图标中,那么您就知道自己处于正确的路径。

+0

你可以添加一些代码如何做到这一点 –