2012-08-07 2 views
0

Dans UIView si vous effectuez les opérations suivantes:drawRect avec un fond clair et couche dégradé personnalisé

CAGradientLayer *layer = [CAGradientLayer layer]; 
layer.colors = [NSArray arrayWithObjects:(id) [UIColor colorWithRed:0 green:0 blue:0.1 alpha:1].CGColor,[UIColor colorWithRed:0.3 green:0.3 blue:0.74 alpha:1].CGColor, nil]; 
layer.frame=CGRectMake(0, 0, self.frame.size.width,self.frame.size.height); 
[self.layer insertSublayer:layer atIndex:0]; 

Will drawRect puis effectuer le dessin personnalisé sur le dessus de ce gradient? Est-ce que drawRect affecte l'arrière-plan réel d'une vue ou est-ce un autre calque entièrement? Si la couleur d'arrière-plan de la vue est clearColor, drawRect s'affiche-t-il toujours?

Répondre

0

Une sous-couche obscurcit le contenu de sa super-couche. Si vous remplacez drawRect: pour dessiner du contenu, ce contenu sera masqué par la couche de dégradé.

Si vous voulez tracer le dégradé derrière votre contenu (vue), vous devez soit tracer le dégradé dans votre drawRect: au lieu d'utiliser une sous-couche, ou utiliser une vue de conteneur qui contient à la fois la couche de gradient et votre drawRect: contenu -en utilisant vue, avec votre vue de contenu sur le dessus.

En outre, si vous voulez que la couche de gradient pour couvrir votre point de vue, il serait préférable d'initialiser layer.frame comme ceci:

layer.frame = self.bounds; 
Questions connexes