2009-09-14 10 views
19

Nella mia applicazione IPhone, voglio che il testo in UILabel si illumini per un secondo, quindi sbiadisce per un secondo ;. Inoltre voglio ripetere questo ciclo per dire 3 o 4 volte.IPhone Testo Effetto bagliore

È possibile?

+0

bella domanda. Voglio fare la cosa esatta. – Raptor

+1

Dovresti accettare la risposta di @ andrewgleave, che ha funzionato alla grande! – msgambel

risposta

2

Sì. Usa beginAnimation ... commitAnimation e usa il valore alfa per illuminare o attenuare ULabel. Assicurati che il valore predefinito dell'alfa di UILabel inizi a 0,85 e si illumini a 1,0 e poi si oscuri a 0,75, e quando tutto è finito, torni a 0,85.

Ci sono altri modi per farlo, come avere un'altra vista in cima all'etichetta che è grigia o nera e si usa lo stesso inizio ... commitAnimation per cambiare l'alfa su quello da 0 a 0.20 circa.

+0

Leggi la domanda per favore – SeniorShizzle

+0

Sta rispondendo solo alla parte dell'animazione, quindi questa risposta è ok. –

2

Ci sono molti modi per farlo, con qualità variabile. Un modo sarebbe quello di sottoclasse UILabel e implementare una sorta di effetto gradiente nei coregrafici nel metodo drawRect.

È inoltre possibile giocare con l'ombreggiatura del testo (modificare il colore e l'alfa) e vedere se è possibile ottenere un bagliore decente.

Il modo più semplice è probabilmente quello di creare un'immagine trasparente a forma di bagliore in Photoshop e posizionarla dietro il testo, e poi fare come suggerisce mahboudz ... dissolvere l'immagine dentro e fuori usando la corimazione.

39

Come di 3,2 te c'è il supporto diretto per le ombre nel SDK.

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

giocare con i parametri:

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

E per evitare l'ombra di essere fermato dai bouds etichetta:

label.layer.masksToBounds = NO; 

Non dimenticate di

#include <Quartzcore/Quartzcore.h> 

e collegamento alloQuadrio CoreGraphics (grazie ai commentatori per averlo indicato).

+0

Non funziona per me. Qualcos'altro che dovrei prendere in considerazione? – Stavash

+3

È necessario importare adam

+0

avere Quartzcore e compilato correttamente, ma non si vede alcun effetto? – 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; 
} 

Ottengo l'effetto bagliore quando si utilizza questo.

Spero che aiuti.

Happy coding :)

Problemi correlati