我有一个图像。我想沿着路径拖动该图像。路径可以是圆形或矩形。如果图像被触摸和拖动,它应该只沿着路径移动,而不应该离开路径。我曾尝试使用 Core Graphics 和 Core 动画,但找不到正确的方法。我在网上搜索过,但它总是显示如何沿路径移动对象。找不到有关沿路径拖动对象的任何信息。我还发现它们不是 Apple 提供的从 UIBezierPath 中提取点的方法。
他们无论如何都会这样做吗?
我有一个图像。我想沿着路径拖动该图像。路径可以是圆形或矩形。如果图像被触摸和拖动,它应该只沿着路径移动,而不应该离开路径。我曾尝试使用 Core Graphics 和 Core 动画,但找不到正确的方法。我在网上搜索过,但它总是显示如何沿路径移动对象。找不到有关沿路径拖动对象的任何信息。我还发现它们不是 Apple 提供的从 UIBezierPath 中提取点的方法。
他们无论如何都会这样做吗?
该类UIBezierPath
有一个名为 的实例方法- (BOOL)containsPoint:
。使用此方法和 2UIBezierPath
秒,您可以检查您的对象是否沿路径移动。
+---------+
|xxxxxxxxx|
|x+-----+x|
|x| |x|
|x| |x|
|x| |x|
|x+-----+x|
|xxxxxxxxx|
+---------+
这里的技巧是使 1 条路径比第一个路径略小(可能是 2 个像素),同时确保两条路径具有共同的中心。您的对象现在必须经过的路径/路线将是贝塞尔路径区域的差异,您可以从调用- (BOOL)containsPoint:
.
如果您的对象包含在 bigUIBezierPath
中,而不包含在 small 中,那么您知道您走在正确的道路上。