60 votes

iPhone UILabel texte ombre douce

Je sais que des ombres, ne sont pas pris en charge par le UILabel hors de la boîte, sur l'iPhone. Alors quelle serait la meilleure façon de mettre en œuvre la mienne?

EDIT:

Évidemment, je vais sous-classe de la UILabel et de dessiner dans l'-drawRect: Ma question est, comment puis-je obtenir le contenu de l'étiquette sous forme de graphique et de dessiner autour d'eux, flou, etc...

EDIT 2:

Je suis retourné à cette question à propos d'un an plus tard. En attendant, j'ai intégré une classe qui permet d'ajouter facilement doux de l'ombre à une étiquette et ajuster le rayon etc et aussi de faire des dégradés sur le texte lui-même. Vous pouvez le trouver sur GitHub: https://github.com/doukasd/iOS-Components/tree/master/Views

191voto

IlDan Points 4104

À partir de la version 3.2, les ombres sont prises en charge directement dans le SDK.

 label.layer.shadowColor = [label.textColor CGColor];
label.layer.shadowOffset = CGSizeMake(0.0, 0.0);
 

Importez <QuartzCore/QuartzCore.h> et jouez avec certains paramètres:

 label.layer.shadowRadius = 3.0;
label.layer.shadowOpacity = 0.5;
 

Et si vous trouvez votre ombre coupée par les limites de l'étiquette:

 label.layer.masksToBounds = NO;
 

38voto

oksk Points 467

Je vous conseille d'utiliser les propriétés shadowColor et shadowOffset de UILabel:

 UILabel* label = [[UILabel alloc] init];
label.shadowColor = [UIColor whiteColor];
label.shadowOffset = CGSizeMake(0,1);
 

19voto

Brad Larson Points 122629

Cette réponse à cette question similaire fournit du code pour dessiner une ombre floue derrière un UILabel. L'auteur utilise CGContextSetShadow () pour générer l'ombre du texte dessiné.

17voto

Stefan Points 406

En plus de la réponse d’IIDan: À certaines fins, il est nécessaire de définir

 label.layer.shouldRasterize = YES
 

Je pense que cela est dû au mode de fusion utilisé pour rendre l'ombre. Par exemple, j'avais un fond sombre et un texte blanc dessus et je voulais "mettre en surbrillance" le texte en utilisant une lueur noire et ombreuse. Cela ne fonctionnait pas jusqu'à ce que je définisse cette propriété.

7voto

Yang Meyer Points 2054

Appliquez l'ombre (douce) sur le calque de la vue, comme suit:

 UILabel *label = [[UIabel alloc] init];
label.layer.shadowColor = [[UIColor whiteColor] CGColor];
label.layer.shadowOpacity = 1.0;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X