我想知道我的 CGMutablePathRef 是否有超过 3 个点!这种检查会经常发生,所以我正在寻找一种有效的解决方案。
我需要这样做的原因是因为在我的项目中用户绘制了一个形状。当用户拖动他/她的手指时,一个 CGPoint(手指的当前位置)被添加到路径中,并且当调用 touchEnded: 时添加一个物理主体。现在如果用户只是点击屏幕,CGMutablePathRef 中只有一个点它(我脑子里的推理),当我使用我的 CGMutablePathRef 添加物理主体时出现以下错误。
Assertion failed: (count >= 2), function CreateChain, file /SourceCache/PhysicsKit/PhysicsKit-6.5.4/PhysicsKit/Box2D/Collision/Shapes/b2ChainShape.cpp, line 45.
我想创建一个函数来调用它以 cgpathref 作为参数并计算点数直到它达到 3(如果没有 3 则结束)并返回一个 bool
谢谢 :)
最佳答案
如果要枚举CGPath
的元素,则必须使用CGPathApply
,并且不支持提前终止。您必须枚举所有元素。
从 this answer 获取我的 Rob_forEachElementOfCGPath
函数,并像这样使用它:
int numberOfSegmentsInCGPath(CGPathRef path) {
__block int count = 0;
Rob_forEachElementOfCGPath(path, ^(const CGPathElement *element) {
if (element->type != kCGPathElementMoveToPoint) {
++count;
}
});
return count;
}
关于ios - 检查 CGPathRef 中 CGPoints 数量的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26306962/