Ich versuche, zwei überlappende UIBezierPaths mit UIBezierPath.append
zusammenführen, und ich möchte den überlappenden Raum gefüllt werden. Ich habe versucht, die Eigenschaft usesEvenOddFillRule
auf false
zu setzen, aber es füllt immer noch nicht. Hier ist minimal Beispiel für das Problem:UIBezierPath Anhängen Überlappung ist nicht gefüllt
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()
}
Daraus ergibt sich die folgende Form:
Was ich möchte aussehen:
Dieses Problem scheint auch zu vorkommen, wenn move(to: CGPoint)
auf einem UIBezierPath verwendet wird. Wenn Sie beide Formen auf demselben UIBezierPath zeichnen würden, würde das gleiche Problem auftreten.
Weiß jemand, wie man den überlappenden Bereich füllt? Vorzugsweise würde die Lösung auch funktionieren, wenn füllen tun rufen addClip()
Ich brauche die fusionierte Pfade später im Code als Clip zu verwenden, so dass dies leider ist keine Lösung für das Problem – Loovjo