[英]How to smooth the joint of lines in bezier path?
我正在尝试使用UIBezierPath
绘制长方体形状。 我的绘图代码如下:
((x,y)是我的UIView
原点,(h,w)是它的大小)
UIBezierPath *bpath1 = [UIBezierPath bezierPath];
[bpath1 moveToPoint:CGPointMake(x, y + h * 0.4)];
[bpath1 addLineToPoint:CGPointMake(x, y + h)];
[bpath1 addLineToPoint:CGPointMake(x + w - (w * 0.4), y + h)];
[bpath1 addLineToPoint:CGPointMake(x + w - (w * 0.4), y + h * 0.4)];
[bpath1 closePath];
UIBezierPath *bpath2 = [UIBezierPath bezierPath];
[bpath2 moveToPoint:CGPointMake(x + w * 0.4, y)];
[bpath2 addLineToPoint:CGPointMake(x + w, y)];
[bpath2 addLineToPoint:CGPointMake(x + w - (w * 0.4), y + h * 0.4];
[bpath2 addLineToPoint:CGPointMake(x, y + h * 0.4];
[bpath2 closePath];
UIBezierPath *bpath3 = [UIBezierPath bezierPath];
[bpath3 moveToPoint:CGPointMake(x + w, y)];
[bpath3 addLineToPoint:CGPointMake(x + w, y + h - (h * 0.4))];
[bpath3 addLineToPoint:CGPointMake(x + w - (w * 0.4), y + h)];
[bpath3 addLineToPoint:CGPointMake(x + w - (w * 0.4), y + h * 0.4];
[bpath3 closePath];
我创建了3条路径,因为我希望每个路径都具有不同的alpha值。 我得到所需的输出如下:
但是令我惊讶的是, h
(高度)的值很少,我得到的形状如下:
现在,出现这种形状的值的数量很少。 由于每次渲染代码都是相同的,所以我不理解贝塞尔曲线路径的这种奇怪行为。 为什么贝塞尔曲线显示这种行为,并且有什么方法可以使这些关节光滑?
看一下lineCapStyle
和lineJoinStyle
。 具体来说,我认为这是因为lineJoinStyle
默认为Mitre,并且将其更改为Round或更改了miterLimit
。
我相信这与不绘制平滑曲线的UIBezierPath具有相同的解决方案
如果您在UIView上绘图,则adam的解决方案有效。 但是,如果你在绘制CaShapeLayer
(如在我的情况),那么你必须设置lineJoin
你的财产shapeLayer
,而不是路径。 该解决方案进行了说明这里 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.