8 Stimmen

Vollständiges Löschen von mit UIBezierPath & CAShapeLayer gezeichneten Elementen

Im Porträtmodus (erstes Mal zeichnen)

Geben Sie hier eine Bildbeschreibung ein

Nach dem Drehen ins Querformat, warum sind die älteren Formen:

Geben Sie hier eine Bildbeschreibung ein

Ich verwende UIBezierPath & CAShapeLayer, um Kreise & Linien in der Ebene eines benutzerdefinierten UIView zu zeichnen. Das Problem ist, dass ich trotz der Fähigkeit, nach der Drehung des Geräts erfolgreich neue Kreise & Linien zu zeichnen, nicht in der Lage bin, die älteren gezeichneten Formen zu entfernen. Die neu gezeichneten Formen nach der Drehung des Geräts sind perfekt, ich muss nur die älteren Formen vom Bildschirm entfernen. Angefügte Bilder.

12voto

Rob Punkte 389782

Sie können entweder das vorherige CAShapeLayer entfernen (mit removeFromSuperlayer) oder den Pfad des vorherigen CAShapeLayer ersetzen. Es scheint, als würde ein neuer Layer hinzugefügt, ohne den alten zu entfernen, aber natürlich ist es ohne Quellcode unmöglich zu sagen.

4voto

ystack Punkte 1805

Aah! Lösung gefunden rootView.layer.sublayers = nil verwenden entfernte alle früheren Formen

2voto

Pavle Mijatovic Punkte 763

Für mich

rootView.layer.sublayers = nil

Warf eine Speicherausnahme, aber da ich nur CAShapeLayer-Objekte entfernen musste, hat der folgende Code für mich funktioniert:

for sublayer in view.layer.sublayers! where sublayer is CAShapeLayer {
    sublayer.removeFromSuperlayer()
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X