CashApelayer保持关闭路径,我希望这条路打开



我正在使用ca从一组点绘制线段。由于某种原因,尽管我没有关闭NsbezierPath,但CashApelayer会导致封闭形状。以下是我的代码。还有其他人有这个问题吗?

// mappedPoints is an array of CGPoints
NSBezierPath *path = [NSBezierPath bezierPath];
[path appendBezierPathWithPoints:mappedPoints count:numPoints];
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = [path CGPath];
shapeLayer.strokeColor = [color CGColor];
shapeLayer.lineWidth = lineWidth;
shapeLayer.fillColor = nil;
[self.layer addSublayer:shapeLayer];

我允许自己在这里猜测[path CGPath]呼叫是您关闭这条路的原因,因为那正是我发生的事情。

给出更多上下文-Apple从NSBezierPath对象示例代码创建CGPathRef,该代码在其中创建了NSBezierPath类别方法,例如上面的CGPath,它具有:

// Be sure the path is closed or Quartz may not do valid hit detection.
if (!didClosePath)
    CGPathCloseSubpath(path);

(来自同一来源)背后的原因:

Quartz需要关闭路径才能在 路径的填充区域

如果您对填充区的命中率检测不感兴趣,则可以安全地跳过那段路径的零件,您会得到预期的行为。

相关内容

最新更新