2010-10-25 17 views
5

Sto tentando di animare la proprietà backgroundColor della classe UILabel e di non riuscire fino ad ora. Qui il frammento di mio codiceCosa è effettivamente animabile in UILabel?

-(void) blink { 
    UIColor* originalColor = lblDescription.backgroundColor; 
    lblDescription.backgroundColor = [UIColor yellowColor]; 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    lblDescription.backgroundColor = originalColor; 
    [UIView commitAnimations]; 
} 
//this code works if lblDescription is UIView and does not if UILabel 

ho trovato alcune affermazioni che alcune proprietà UILabel non sono animatable, ma non ho potuto suffragare tale affermazione leggendo documenti Apple. Mi stavo chiedendo se qualcuno può far luce su questo problema.

+1

Buona domanda. La maggior parte delle volte cerco solo di sapere se è animabile ... – gcamp

risposta

4

Su this page from the View Programming Guide For iOS, "Tabella 1-2 Proprietà animabili" presumibilmente elenca tutte le proprietà animabili di UIViews. Non include backgroundColor.

Ma l'UIView classe di riferimento, sotto la proprietà backgroundColor che dice:

Discussione
Modifiche a questa proprietà può essere animato. Il valore predefinito è nullo.

Quindi non è chiaro perché il backgroundColor di UILabel non si anima.

La soluzione che ho utilizzato in passato consiste nell'utilizzare un CATextLayer anziché un UILabel.

+0

Non funziona in 3.1.3 – bioffe

+0

Prova questi due altri espedienti in [questa domanda] (http://stackoverflow.com/questions/2426614/how- to-animato-the-TextColor-proprietà-di-un-UILabel). Quelli dovrebbero funzionare nelle versioni precedenti del sistema operativo. – Anna

+0

@aBitObvious CATextLayer non ha strutture di allineamento verticale (in iOS) e rende il testo nella parte superiore della sua superficie (UILabel rende al centro). ( – bioffe

Problemi correlati