2009-09-14 10 views
19

En mi aplicación para iPhone, quiero que el texto en UILabel brille por un segundo y luego desaparezca por un segundo ;. También quiero repetir este ciclo por decir 3 o 4 veces.Efecto Resplandor de texto del iPhone

¿Esto es posible?

+0

nice question. Quiero hacer exactamente lo mismo. – Raptor

+1

¡Debería aceptar la respuesta de @andrewgleave, ya que funcionó muy bien! – msgambel

Respuesta

2

Sí. Use beginAnimation ... commitAnimation, y use el valor alfa para aclarar o atenuar ULabel. Asegúrese de que el valor predeterminado de la alfa de UILabel comience en 0.85 y aumente a 1.0 y luego se oscurezca a 0.75, y cuando todo haya terminado, volverá a 0.85.

Hay otras maneras de hacerlo, como tener otra vista en la parte superior de la etiqueta que sea gris o negra, y utilice el mismo comenzar ... confirmarAnimación para cambiar el alfa de 0 a 0,20 o más.

+0

Lea la pregunta, por favor – SeniorShizzle

+0

Está respondiendo solo la parte de animación, por lo que esta respuesta es correcta. –

2

Hay muchas maneras de hacerlo, con calidad variable. Una forma sería subclase UILabel, e implementar algún tipo de efecto de gradiente en coregraphics en el método drawRect.

También puede jugar con la sombra de texto (cambiar el color y el alfa) y ver si puede obtener un brillo decente.

La manera más fácil es, probablemente, hacer una imagen de contorno resplandeciente transparente en photoshop y colocarla detrás de su texto, y luego hacer como mahboudz sugiere ... atenuar la imagen dentro y fuera utilizando la animación central.

39

A partir de 3,2 que existe un apoyo directo para las sombras en el SDK.

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

jugar con los parámetros:

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

Y para evitar la sombra de ser recortado por las bouds etiqueta:

label.layer.masksToBounds = NO; 

No se olvide de

#include <Quartzcore/Quartzcore.h> 

y enlace contra el QuartzCore o CoreGraphics frameworks (gracias a los comentaristas por señalar esto).

+0

No funciona para mí. ¿Algo más que debería tener en cuenta? – Stavash

+3

Necesita importar adam

+0

tener Quartzcore y compilarse con éxito, pero ¿no ve ningún efecto? – 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; 
} 

Obtengo el efecto de brillo al usar esto.

Espero que ayude.

Happy coding :)

Cuestiones relacionadas