Objective c 无法清除贝塞尔路径上的尖峰
我正在绘制一些简单的bezier路径,但我发现不可能删除线段之间的角度很小时创建的尖峰: (注意:圆来自单独的绘图操作,但我正在尝试确保线不会穿过圆…) 我尝试过lineCapStyle和lineJoinStyle的各种变体,但似乎都不起作用。 除了下面显示的内容之外,我还尝试使用带有“setMiterLit”的斜接连接 这是我的线条画代码剪贴画:Objective c 无法清除贝塞尔路径上的尖峰,objective-c,ios7,core-graphics,Objective C,Ios7,Core Graphics,我正在绘制一些简单的bezier路径,但我发现不可能删除线段之间的角度很小时创建的尖峰: (注意:圆来自单独的绘图操作,但我正在尝试确保线不会穿过圆…) 我尝试过lineCapStyle和lineJoinStyle的各种变体,但似乎都不起作用。 除了下面显示的内容之外,我还尝试使用带有“setMiterLit”的斜接连接 这是我的线条画代码剪贴画: CAShapeLayer *myShapeLayer=[CAShapeLayer layer]; UIBezierPath *myPath=[UI
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];
您应该在形状层而不是路径上设置
lineJoin
:
myShapeLayer.lineJoin = kCALineJoinRound;
混淆的原因是UIBezierPath能够绘制路径(通过调用路径上的
fill
和stroke
)。路径上的线连接和线帽的配置仅影响此图形
但是,由于您正在使用CAShapeLayer绘制路径,因此线条连接和线条封口的配置都应该在形状层上完成。请查看
miterLimit
geedubb-您可能错过了我上次的编辑-我尝试过,但似乎也不起作用。很好!但是,如果它没有效果,为什么它也可以设置在路径上呢?谢谢@wayneh bezier路径上的配置影响bezier路径如何绘制路径,形状层上的配置影响形状层如何绘制路径。您的意思是“在路径上影响路径,在层上影响笔划/填充”吗?