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'''後我無法清理這個虛線設置,我怎麼能做到這一點? –