0
我知道用UIBezierPath()来绘制一个虚线状:是否有可能绘制虚线,而无需使用UIBezierPath
let path = UIBezierPath()
path.setLineDash([CGFloat(4), CGFloat(4)], count: 2, phase: 0)
path.lineCapStyle = CGLineCap.round
path.move(to: startPoint)
path.addLine(to: endPoint)
path.stroke()
它工作正常。但我怎么能在上下文中画一条虚线?就像下面的代码可以得出一个实线,无论我是否添加
context.setLineDash(phase: 3, lengths: [3,2])
整个代码:
override func draw(_ rect: CGRect) {
if let context = UIGraphicsGetCurrentContext() {
let startPoint = CGPoint(x: 50, y: 10)
let endPoint = CGPoint(x: rect.width-100, y: 10)
context.setLineDash(phase: 3, lengths: [3,2])
context.setLineWidth(10)
context.move(to: startPoint)
context.addLine(to: endPoint)
context.setStrokeColor(UIColor.red.cgColor)
context.setLineCap(.round)
context.strokePath()
}
}
结果是:
什么不对?
正确!谢谢!但是我认为当线宽为10时线帽的半径是5,对吗?如果差距为2应该是'''[3,12]''' –
@WilliamHu啊你发现我的*咳嗽*故意*咳嗽*错误。哈哈!是的,你是对的,半径将是5而不是10.现在更新:D – Fogmeister
我可以问另一个问题吗?我想先画出虚线然后再画实线。但'''context.setLineDash'''后我无法清理这个虚线设置,我怎么能做到这一点? –