Comment appliquer CAGradientLayer que le masque d'un autre CALayer?
J'ai une vision, qui a un CALayer. Quand je crée un CAGradientLayer et de l'appliquer comme un masque de ce point de vue est CALayer, rien ne se passe. Pourquoi?
En initWithFrame: de la vue je fais ceci:
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;
Si je remplace
self.layer.mask = gradient;
avec
[self.layer insertSublayer:gradient atIndex:0];
puis-je voir le dégradé. C'est du noir au blanc.
Quel est le truc?
- Pour les autres qui luttent avec masque en dégradé, il ne fonctionnera pas si elle est appliquée à un
UIStackView
.
Vous devez vous connecter pour publier un commentaire.
La propriété masque sur CALayer utilise le alpha composant de la couche de masque à déterminer ce qui doit être visible et pas. Puisque les deux couleurs (noir et blanc) sont totalement opaques (pas de transparence) le masque n'a aucun effet. Pour corriger cela, vous devez modifier l'une de ces couleurs pour une couleur claire:
C'est le "truc" 😀