48 votes

Comment appliquer l'ombre du texte à UITextView?

En fait, j'aime UILabel. Ils sont adorables. Maintenant, je devais aller à UITextView car UILabel n'aligne pas le texte verticalement en haut. Zut. Une chose dont j'ai vraiment besoin est une ombre de texte. UILabel l'a. UITextView ne semble pas l'avoir. Mais je suppose que ce gars utilise simplement les mêmes ajouts sous-jacents UIKit NSString ?? Peut-être que quelqu'un a déjà une solution à ce problème? Qu'est-ce que j'écraserais?

156voto

adjwilli Points 4477
 text.layer.shadowColor = [[UIColor whiteColor] CGColor];
text.layer.shadowOffset = CGSizeMake(1.0f, 1.0f);
text.layer.shadowOpacity = 1.0f;
text.layer.shadowRadius = 1.0f;
 

Et n'oubliez pas d'ajouter en haut:

 #import <QuartzCore/QuartzCore.h>
 

16voto

nik Points 530

La réponse avec

text.layer.shadowColor

ajoute de l'ombre à tout le texteView, peut-être que cela fonctionne, mais il ajoute non seulement de l'ombre au texte.

La bonne réponse est:

 CALayer *textLayer = ((CALayer *)[textView.layer.sublayers objectAtIndex:0]);
textLayer.shadowColor = [UIColor whiteColor].CGColor;
textLayer.shadowOffset = CGSizeMake(0.0f, 1.0f);
textLayer.shadowOpacity = 1.0f;
textLayer.shadowRadius = 1.0f;
 

9voto

Robert Points 10822

Dans iOS 6+, utilisez le texte attribué

 NSShadow * shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor blackColor];
shadow.shadowOffset = CGSizeMake(2, 2);

NSDictionary * textAttributes =
@{ NSForegroundColorAttributeName : [UIColor blueColor],
   NSShadowAttributeName          : shadow,
   NSFontAttributeName            : [UIFont boldSystemFontOfSize:20] };

textView.attributedText = [[NSAttributedString alloc] initWithString:@"Hello" 
                                                          attributes:textAttributes];
 

Bonjour exemple

2voto

Hunter Su Points 8

Robert a raison! Génial!!!

     NSShadow * shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor blackColor];
shadow.shadowOffset = CGSizeMake(2, 2);

NSDictionary * textAttributes =
@{ NSForegroundColorAttributeName : [UIColor blueColor],
   NSShadowAttributeName          : shadow,
   NSFontAttributeName            : [UIFont boldSystemFontOfSize:20] };

textView.attributedText = [[NSAttributedString alloc] initWithString:@"Hello" 
                                                          attributes:textAttributes];
 

0voto

Cocoanetics Points 5729

Cela dépend de la version d'iOS que vous utilisez. À partir d'iOS 6, une seule ombre est prise en charge, vous la définissez comme attribut sur une chaîne NSAttributedString que vous définissez ensuite sur l'étiquette.

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