设置线帽样式不起作用 UIBezierPath

Posted

技术标签:

【中文标题】设置线帽样式不起作用 UIBezierPath【英文标题】:Setting line cap style doesn't work UIBezierPath 【发布时间】:2016-09-19 08:06:00 【问题描述】:

这是我的代码:

    let cross = UIBezierPath()
    cross.move(to: CGPoint(x: skull.bounds.maxX, y: skull.bounds.minY))
    cross.addLine(to: CGPoint(x: skull.bounds.minX, y: skull.bounds.maxY))
    cross.close()
    UIColor.red.set()
    cross.lineWidth = 3.0
    cross.lineCapStyle = .round
    cross.stroke()

我想把线的末端弄圆,但还是方形,我该怎么做?

【问题讨论】:

我认为你的线被切断了,因为你使用最大框架来绘制线,将最大值、最小值减少 5,看看会发生什么。 【参考方案1】:

刚刚在 PlayGround 上测试过,希望对您有所帮助

let cross = UIBezierPath()
cross.moveToPoint(CGPoint(x: 10, y: 100)) // your point
cross.addLineToPoint(CGPoint(x: 100, y: 10)) // your point
cross.closePath()
cross.lineWidth = 23.0
cross.lineJoinStyle = .Round
cross.stroke()

结果

【讨论】:

【参考方案2】:

line cap 样式配置行尾的样式。你有封闭的路径,即你没有行尾。

您可能正在寻找 line join 样式,它会影响路径的所有“角”或“顶点”。

或者,如果您只想要一条直线,请不要关闭路径。否则你会得到两条线段:一条从起点到终点,另一条回到起点。

【讨论】:

【参考方案3】:

Swift 4.1 更新 Umair Afzal 的代码:

let cross = UIBezierPath()
cross.move(to: CGPoint(x: 10, y: 100)) // your point
cross.addLine(to: CGPoint(x: 100, y: 10)) // your point
cross.lineWidth = 12
cross.lineCapStyle = .round
cross.stroke()

【讨论】:

以上是关于设置线帽样式不起作用 UIBezierPath的主要内容,如果未能解决你的问题,请参考以下文章

UIBezierPath:byRoundingCorners:不起作用

我可以向 UIBezierPath 添加自定义线帽吗?

UIBezierPath 不起作用

UIBezierPath 在右上角和右下角不起作用

无法让 UIBezierPath 应用 linecapstyle / linejoinstyle

JavaScript 创建DIV 设置样式不起作用,很多都是因为设置样式的顺序问题