Wie kann CAGradientLayer als Maske eines anderen CALayers angewendet werden?
Ich habe eine view, die hat einen CALayer. Wenn ich ein CAGradientLayer und wenden Sie es wie die Maske, die Sicht ist CALayer, passiert nichts. Warum?
In -initWithFrame: der Blick kann ich dies tun:
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
//[self.layer insertSublayer:gradient atIndex:0];
self.layer.mask = gradient;
Wenn ich ersetzen
self.layer.mask = gradient;
mit
[self.layer insertSublayer:gradient atIndex:0];
dann sehe ich den Verlauf. Es ist von schwarz zu weiß.
Was ist der trick?
Kommentar zu dem Problem
Für andere, die kämpfen mit verlaufsmaske, es wird nicht funktionieren, wenn es, angewendet auf ein
UIStackView
. InformationsquelleAutor der Frage Proud Member | 2012-05-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mask-Eigenschaft auf CALayer verwendet die alpha Komponente der Ebenenmaske, um zu bestimmen, was sichtbar sein soll und nicht. Da beide Farben (schwarz und weiß) sind voll deckend (nicht transparent) die Maske hat keine Wirkung. Um dies zu beheben, sollten Sie ändern Sie die Farben, um eine klare Farbe:
Das ist der "trick" 😀
InformationsquelleAutor der Antwort David Rönnqvist