无法摆脱bezier路径上的尖峰

时间:2014-08-06 15:46:40

标签: objective-c ios7 core-graphics

我正在绘制一些简单的bezier路径,但我发现当线段之间的角度很小时,无法移除所创建的尖峰:

enter image description here

(注意:圆圈来自单独的绘图操作,但我试图确保线条不会超过圆圈...)。

我尝试过各种各样的lineCapStyle和lineJoinStyle,但似乎没什么用。 除了下面显示的内容之外,我还尝试使用“SetMiterLimit'”进行斜接加入。

这是我的线条图代码片段:

CAShapeLayer *myShapeLayer=[CAShapeLayer layer];
UIBezierPath *myPath=[UIBezierPath bezierPath];
[myPath moveToPoint:tmpPoint];
[myPath addLineToPoint:tmpPoint];         
[myPath setLineCapStyle:kCGLineCapRound];
[myPath setLineJoinStyle:kCGLineJoinRound];

myShapeLayer.path=[myPath CGPath];
myShapeLayer.strokeColor = [[UIColor yellowColor] CGColor];
myShapeLayer.fillColor = [[UIColor clearColor] CGColor];
myShapeLayer.lineWidth = 3.0;

以防万一 - 这里是我使用的主干代码,将值变为0.0到100.0 - 所有这些都没有效果:

[myPath setLineCapStyle:kCGLineCapRound];
[myPath setLineJoinStyle:kCGLineJoinMiter];
[myPath setMiterLimit:1.0];

1 个答案:

答案 0 :(得分:2)

您应该在形状图层而不是路径上设置lineJoin

myShapeLayer.lineJoin = kCALineJoinRound;

混淆来自于UIBezierPath能够绘制路径(通过在路径上调用fillstroke)。路径上的线连接和线帽的配置仅影响此绘图。

但是,由于您使用CAShapeLayer绘制路径,因此应在形状图层上完成线连接和线帽的配置。