2014-12-03 12 views
6

Im Portrait-Modus (zum ersten Mal Zeichnung)vollständig UIBezierPath & CAShapeLayer gezogen Artikel

enter image description here

Nach dem Drehen um Landschaft zu löschen, warum sind die älteren Formen:

enter image description here

Ich benutze UIBezierPath & CAShapeLayer um Kreise & Linien in einer benutzerdefinierten UIView Ebene zu zeichnen. Das Problem ist trotz der Möglichkeit, neue Kreise & Zeilen erfolgreich zu zeichnen, nachdem Gerät gedreht wird, kann ich die älteren gezeichneten Formen nicht entfernen. Die neuen Formen, die nach der Drehung des Geräts gezeichnet werden, sind perfekt, ich muss nur die alten Formen, die auf dem Bildschirm haften, vom Bildschirm entfernen. Bilder beigefügt.

+0

Bitte geben Sie relevanten Code (z. B. was Sie bei der Rotation tun). – Rob

Antwort

9

Sie können entweder die vorherige CAShapeLayer (mit removeFromSuperlayer) entfernen oder die path der vorherigen CAShapeLayer ersetzen. Sie scheinen eine neue Ebene hinzuzufügen, ohne die alte zu entfernen, aber natürlich ist es unmöglich, ohne Quellcode zu unterscheiden.

+0

danke für deinen Vorschlag, es hat mich auf den richtigen Weg geschoben – ystack

3

aah! gefunden die Lösung mit rootView.layer.sublayers = nil entfernt alle früheren Formen

+4

Ich würde froh sein, dass deine Technik funktioniert, aber ich würde immer noch darauf hinarbeiten, deine eigenen schwachen Referenzen zu den Layern zu behalten, die du hinzugefügt hast und '' '' removeFromSuperlayer'' nennen . Diese Technik, "Unterschichten" auf "Null" zu stellen, erscheint mir etwas schwerfällig. Außerdem habe ich Beiträge gesehen, die zeigen, dass es Probleme mit dieser Technik gibt (es könnte einige Unterschiede in der Betriebssystemversion im Verhalten dieser Technik geben). Trotzdem bin ich froh, dass du dein Problem gelöst hast. – Rob

Verwandte Themen