Wie wende ich CAGradientLayer als Maske eines anderen CALayers an?

Ich habe eine Ansicht, die einen CALayer hat. Wenn ich einen CAGradientLayer erstelle und ihn als Maske des CALayers dieser Ansicht anwende, passiert nichts. Warum?

In -initWithFrame: der Ansicht mache ich das:

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 ersetze

self.layer.mask = gradient;

mit

[self.layer insertSublayer:gradient atIndex:0];

dann sehe ich den gradienten. Es ist von schwarz nach weiß.

Was ist der Trick?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage