我試圖合併兩個重疊的UIBezierPaths使用UIBezierPath.append
,我想重疊的空間被填充。我嘗試將usesEvenOddFillRule
屬性設置爲false
,但它仍未填充。這是問題的小例子:UIBezierPath追加重疊未填充
override func draw(_ rect: CGRect) {
let firstShape = UIBezierPath()
firstShape.move(to: CGPoint(x: 100, y: 100))
firstShape.addLine(to: CGPoint(x: 100, y: 150))
firstShape.addLine(to: CGPoint(x: 150, y: 170))
firstShape.close()
let secondShape = UIBezierPath(rect: CGRect(x: 125, y: 125, width: 75, height: 75))
let combined = UIBezierPath()
combined.append(firstShape)
combined.append(secondShape)
UIColor.black.setFill()
combined.fill()
}
我們得到以下形狀:
我想什麼它看起來像:
這個問題當在一個UIBezierPath上使用move(to: CGPoint)
時似乎也會發生。如果你要在同一個UIBezierPath上繪製這兩個形狀,就會出現同樣的問題。
有誰知道如何使重疊區域填充?最好做addClip()
我需要稍後在代碼中使用合併路徑作爲剪輯,所以這不幸並不是解決問題的方法 – Loovjo