我正在绘制一些简单的bezier路径,但我发现当线段之间的角度很小时,无法移除所创建的尖峰:
(注意:圆圈来自单独的绘图操作,但我试图确保线条不会超过圆圈...)。
我尝试过各种各样的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];
答案 0 :(得分:2)
您应该在形状图层而不是路径上设置lineJoin
:
myShapeLayer.lineJoin = kCALineJoinRound;
混淆来自于UIBezierPath能够绘制路径(通过在路径上调用fill
和stroke
)。路径上的线连接和线帽的配置仅影响此绘图。
但是,由于您使用CAShapeLayer绘制路径,因此应在形状图层上完成线连接和线帽的配置。