ios - 检查 CGPathRef 中 CGPoints 数量的最有效方法

标签 ios function cgpoint cgpath

我想知道我的 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/

相关文章:

ios - 在 main 中捕获 NSException

swift - 从多次点击获取坐标并将其返回到数组中以供另一个函数使用

ios - 如何从 react native 页面快速打开现有的ViewController?

ios - 如何从 iPhone/iPad Storyboard迁移到通用 Storyboard

具有在初始化时定义的不同行为的 C++ 成员函数

JavaScript 扩展运算符 ... 与 "arguments"数组

iphone - 带drawAtPoint的多行文本(自动换行)?

ios - 如何改变物体的中心?

ios - Facebook 应用程序 API key 和 UIActivityViewController

javascript - 云函数 - 更新 onUpdate 触发器内的文档变量。可能的?