Como aplicar CAGradientLayer como máscara de outro CALayer?

Eu tenho uma visão, que tem um CALayer. Quando eu crio um CAGradientLayer e o aplico como a máscara do CALayer dessa visão, nada acontece. Por quê?

In -initWithFrame: da visão eu faço isso:

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;

Se eu substituir

self.layer.mask = gradient;

com

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

então eu vejo o gradiente. É de preto para branco.

Qual é o truque?

questionAnswers(1)

yourAnswerToTheQuestion