Ich habe eine benutzerdefinierte UIView, in der ich mehrere praktische Zeichenmethoden implementiere, die es mir erlauben, Eckenradien bestimmter Ecken zu setzen, Grenzen zu zeichnen und Farbverläufe anstelle einer Hintergrundfarbe zu verwenden. Ich erreiche dies durch Überschreiben drawRect(rect:CGRect)
. Trotz der Verwendung von CGContextClip
zum Zeichnen von Zeichnungen an den generierten CGPathRef wird die Hintergrundfarbe immer gezeichnet, um die Grenzen der Ansicht zu füllen. Das liegt daran, dass der Layer der Ansicht vor dem Aufruf von drawRect gezeichnet wird.Wie verhindert man, dass CALayer Hintergrundfarbe zeichnet?
Abgesehen von dem Überschreiben der Setter für backgroundColor gibt es andere Möglichkeiten, nur zeichnen, was ich in drawRect angeben? Ich möchte die Ebene NICHT mit einem CAShapeLayer oder etwas Ähnlichem maskieren. Es sollte weiterhin möglich sein, eine Unterklasse zu erstellen und außerhalb der Grenzen der Ebene zu zeichnen.
Setzen Sie die 'backgroundColor', um die Farbe zu löschen und den Setter zu überschreiben. Das ist das einzige, was du tun kannst. Beachten Sie auch die Eigenschaften 'clearsContextBeforeDrawing' und' opaque'. – Sulthan
Ja, ich benutze derzeit die Methode override backgroundColor, aber ich fragte mich, ob es einen besseren Weg gab. Scheint nicht zu sein. – GoldenJoe