19 votes

Effet de lueur sur le texte de l'IPhone

Dans mon application IPhone, je veux que le texte dans UILabel s'illumine pendant une seconde, puis s'estompe pendant une seconde ;. Je souhaite également répéter ce cycle 3 ou 4 fois.

Est-ce possible ?

39voto

IlDan Points 4104

Depuis la version 3.2 you, le SDK prend directement en charge les ombres.

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

Jouez avec les paramètres :

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

Et pour éviter que l'ombre ne soit coupée par les boudins de l'étiquette :

label.layer.masksToBounds = NO;

N'oubliez pas de

#include <Quartzcore/Quartzcore.h>

et le lier à la QuartzCore o CoreGraphics (merci aux commentateurs de l'avoir signalé).

14voto

andrewgleave Points 131

J'ai mis en ligne un exemple de code qui sous-classe UILabel et vous permet d'appliquer une lueur et des ombres douces au texte.

http://www.redrobotstudios.com/blog/2010/04/29/create-glow-soft-shadow-text-on-iphone/

2voto

mahboudz Points 23653

Oui. Utilisez beginAnimation...commitAnimation, et utilisez la valeur alpha pour éclaircir ou assombrir l'ULabel. Assurez-vous que la valeur par défaut de l'alpha de l'ULabel commence à 0,85 et s'éclaircit jusqu'à 1,0, puis s'assombrit jusqu'à 0,75, et lorsque tout est terminé, vous revenez à 0,85.

Il existe d'autres façons de procéder, par exemple en plaçant une autre vue grise ou noire au-dessus de l'étiquette et en utilisant le même begin...commitAnimation pour modifier l'alpha de cette vue de 0 à 0,20 environ.

2voto

Kenny Winker Points 6171

Il existe de nombreuses façons de procéder, avec une qualité variable. L'une d'entre elles consisterait à sous-classer UILabel et à 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 de type glow-outline dans Photoshop et de la placer derrière votre texte, puis de faire comme mahboudz le suggère... un fondu de l'image en utilisant coreanimation.

2voto

abhi Points 275
- (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;
}

J'obtiens un effet lumineux en l'utilisant.

J'espère que cela vous aidera.

Bon codage :)

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