【发布时间】:2012-09-19 07:09:08
【问题描述】:
我正在将 SVG 文件解析为 UIBezierPath。我想知道CGPoint 是在UIBezierPath 内部还是外部。为此,我使用containsPoint:。当我在模拟器中运行它时,一切正常(几乎!)。当我在 iPad 设备上运行它时,它会在某些路径和点上崩溃。在调用containsPoint: 之前,我会在每个UIBezierPath 上调用closePath。
这里有一些路径和点,它会导致崩溃(我将点随机化,所以可能会有更多的崩溃点):
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。
为什么会崩溃? :-(
【问题讨论】:
-
请把代码贴在你打电话的地方
containsPoint: -
我可以在设备上重现您的崩溃(也许您应该向苹果提交错误报告)。很奇怪。如果在您的情况下性能/精度不是那么重要,您可以栅格化路径并进行简单的颜色查找以进行测试。
-
我遇到了同样的行为:在模拟器上工作,在设备上崩溃。看起来像一个真正的错误,值得https://bugreport.apple.com/。顺便说一句,您必须向他们提供比上述更多的信息,例如向他们展示您生成的实际路径,而不是 SVG 字符串。
标签: objective-c ios quartz-core