2009-09-14 9 views
19

Dans mon application iPhone, je souhaite que le texte de UILabel brille une seconde, puis disparaisse pendant une seconde. Aussi je veux répéter ce cycle par exemple 3 ou 4 fois.IPhone Effet de lueur de texte

Est-ce possible?

+0

bonne question. Je veux faire exactement la chose. – Raptor

+1

Vous devriez accepter la réponse de @ andrewgleave, car cela a bien fonctionné! – msgambel

Répondre

2

Oui. Utilisez beginAnimation ... commitAnimation et utilisez la valeur alpha pour éclaircir ou réduire l'ULabel. Assurez-vous que la valeur par défaut de l'alphabet UILabel commence à 0,85 et s'allume à 1,0 puis diminue à 0,75, et quand tout est fait, vous revenez à 0,85.

Il y a d'autres façons de le faire comme avoir une autre vue en haut de l'étiquette qui est grise ou noire et que vous utilisez le même début ... commitAnimation pour changer l'alpha de 0 à 0.20 environ.

+0

Lire la question s'il vous plaît – SeniorShizzle

+0

Il répond seul à la partie animation, donc cette réponse est ok. –

2

Il y a plusieurs façons de le faire, avec une qualité variable. Une façon serait de sous-classer UILabel et d'implémenter une sorte d'effet de gradient dans coregraphics dans la méthode drawRect.

Vous pouvez également jouer avec l'ombre du texte (changer la couleur et l'alpha) et voir si vous pouvez obtenir une lueur décente. Le moyen le plus simple est probablement de créer une image transparente dans photoshop et de la placer derrière votre texte, et de faire comme le suggère mahboudz ... faire fondre l'image à l'aide de coreanimation.

39

Au 3.2 vous, il y a un soutien direct pour les ombres dans le SDK.

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

Jouer avec les paramètres:

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

Et pour éviter l'ombre clipsage par l'étiquette bouds:

label.layer.masksToBounds = NO; 

Ne pas oublier de

#include <Quartzcore/Quartzcore.h> 

et lien contre le QuartzCore ou CoreGraphics cadres (merci aux commentateurs de le signaler).

+0

Ne fonctionne pas pour moi. Y a-t-il autre chose que je devrais prendre en compte? – Stavash

+3

Vous devez importer adam

+0

avoir Quartzcore et compilé avec succès, mais ne voient aucun effet du tout? – minovsky

2
- (UILabel *) setUpGlowLabelWithFrame: (CGRect) frame fontSize: (int)fontSize { 
     UILabel* label = [[UILabel alloc] initWithFrame:frame]; 
     label.backgroundColor = [UIColor clearColor]; 
     label.font = [UIFont boldSystemFontOfSize:fontSize]; 
     label.textColor = [UIColor whiteColor]; 
     label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; 
     label.textAlignment = UITextAlignmentCenter; 
     label.layer.shadowColor = [label.textColor CGColor]; 
     label.layer.shadowOffset = CGSizeMake(0.0, 0.0); 
     label.layer.masksToBounds = NO; 

    label.layer.shadowRadius = 0.5f; 
    label.layer.shadowOpacity = 0.95; 
    label.numberOfLines = 2; 
    label.tag = 20; 

    return label; 
} 

Je reçois l'effet de lueur lors de l'utilisation.

Espérons que ça aide.

Bonne codage :)