我正在将SVG文件解析为UIBezierPath。我想知道CGPoint是在UIBezierPath内部还是外部。为此,我使用containsPoint:。当我在模拟器中运行此程序时,一切正常(几乎!)。当我运行iPad设备时,它会在某些路径和点上崩溃。我先调用closePath,然后在每个UIBezierPath上调用containsPoint:

这是一些使其崩溃的路径和点(我将这些点随机化,因此可能会有更多的崩溃点):

Crash Points: (659.0, 444.0), (659.0, 443.0)
SVG Path: M661 446 c1 -1 3 -1 4 -1 1 -1 2 -2 2 -4 0 -2 0 -2 -2 -2 0 1 -2 1 -3 1 -2 0 -3 1 -3 2 0 1 0 2 0 3 0 0 1 1 2 1z

Crash Points: (533.0, 458.0), (533.0, 457.0)
SVG Path: M535 460 c0 0 1 -1 1 -2 1 -2 0 -3 -1 -3 0 0 -1 0 -2 1 0 1 0 2 0 3 1 0 1 1 2 1z

我不知道为什么会崩溃。对我来说,无论得到什么路径或指向,它都应返回YESNO

为什么会崩溃? :-(

最佳答案

在这篇文章中尝试点击测试技术:

http://oleb.net/blog/2012/02/cgpath-hit-testing/

我已经在我的一个应用程序中使用了它,它的工作没有任何问题。他的榜样是我使事情顺利进行所需要的。如果您需要更多帮助,可以在今晚发布一些代码。

如果您需要有关SVG解析的任何帮助,我创建了一个github项目来解析SVG路径,并将其扩展为支持线和折线元素。我将SVG转换为UIBezierPaths,然后进行动画和击打测试以绘制手指。

https://github.com/stevekohls/PocketSVG

关于objective-c - containsPoint : for UIBezierPath crashes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12489988/

10-14 22:38