我正在尝试使用 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
默认为 Miter,将其更改为 Round 或更改 miterLimit
。
我相信这与 UIBezierPath not drawing a smooth curve 具有相同的解决方案
关于ios - 如何平滑贝塞尔路径中的线条连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25809347/