UIImage als CAShapeLayer Inhalt
Ist, wenn ich eine CAShapeLayer mit nur einer hintergrund Farbe, es zeigt sich aber, wenn ich den Inhalt eines Bildes, nichts zeigt.
CAShapeLayer* leftDot = [CAShapeLayer layer];
leftDot.opacity = 1.0;
leftDot.frame = CGRectMake(leftRef.CGPointValue.x, leftRef.CGPointValue.y, 2 * radius, 2 * radius);
leftDot.position = CGPointMake(leftRef.CGPointValue.x + 4, leftRef.CGPointValue.y + 4);
leftDot.cornerRadius = radius;
[leftDot setContents:[UIImage imageNamed: @"glow.png"]];
[self.layer addSublayer: leftDot];
Du musst angemeldet sein, um einen Kommentar abzugeben.
CAShapeLayer funktioniert das nicht so. Erstellen Sie eine normale CALayer mit dem Bild als Inhalt, und verwenden Sie dann die Schicht Form, wie die Maske von der Ebene um den Effekt zu erzielen Sie nach.
[HINWEIS: aktualisierte Swift-2.2 und Swift 3]
Schnelle Antwort: verwenden Sie CALayer
Erläutert in CAShapeLayer Klasse Referenz, ein
CAShapeLayer
wird verwendet zum zeichnen von Formen mit einem benutzerdefinierten Pfad. Einstellung ein Bild alscontents
einfach ignoriert werden.Wenn Sie wollen einfach nur, um zu zeigen, ein Bild in einer Ebene (nehmen wir an, deine Datei heißt
image.png
), können Sie eineCALayer
und seinecontents
Eigenschaft so ein, dass es Referenzen, dieCGImage
Darstellung des Bildes:Swift 2.2:
Swift 3:
Längere Antwort: halten Sie mit CAShapeLayer
Seit der OP fragte, speziell über
CAShapeLayer
, stellt sich vielleicht die Frage Lesen, wie "Wie kann ich das Bild so zuschneiden in eine bestimmte Form mitCAShapeLayer
?"Gibt es zwei Lösungen, die ich würde vorschlagen, Sie versuchen:
1) Maskierung
Erstellen Sie eine normale
CALayer
und legen Sie das Bild als seinecontents
. Dann erstellen Sie eineCAShapeLayer
mit dem Pfad, den Sie mögen und verwenden Sie es als die erste Schicht istmask
.Swift 2.2:
Swift 3:
Vergessen Sie nicht, den richtigen Rahmen und Pfade, und Sie sollten in der Lage sein, um die Wirkung zu erreichen, die Sie wollte.
2) Füllen Farbe
Erstellen Sie eine
CAShapeLayer
mit dem Pfad, den Sie mögen, dann verwenden Sie Ihre Bild alsfillColor
.Swift 2.2:
Swift 3:
Können Sie feststellen, diesen Ansatz besser auf den ersten, aber die Kontrolle der Art, wie das Bild füllt Ihre Form ist nicht trivial überhaupt.
Können Sie das Bild durch einstellen der
fillColor
eher als diecontents
:Müssen Sie die CGImage für die Ebene