containsPoint:用于UIBezierPath崩溃

时间:2012-09-19 07:09:08

标签: objective-c ios quartz-core

我正在将SVG文件解析为UIBezierPath。我想知道CGPointUIBezierPath内部还是外部containsPoint:。为此,我使用closePath。当我在模拟器中运行时,everthing工作正常(差不多!)。当我运行iPad设备时,它会在某些路径和点上崩溃。在致电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

以下是一些路径和点,这会导致崩溃(我将点随机化,因此可能会有更多崩溃点):

YES

我无法弄清楚它崩溃的原因。对我来说,不论它得到什么路径或点,它都应该返回NO或{{1}}。

为什么会崩溃? : - (

2 个答案:

答案 0 :(得分:2)

尝试这篇文章中的热门测试技巧:

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

我已经在我的某个应用中使用了它,它可以毫无问题地运行。他的例子就是让事情发挥作用所需要的。如果您需要更多帮助,我今晚可以发布一些代码。

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

https://github.com/stevekohls/PocketSVG

答案 1 :(得分:0)

事实证明崩溃是框架中的一个错误。此answer提供了另一种确定点是否在UIBezierPath内的方法。