设置线帽样式不起作用 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:不起作用