2010-10-25 8 views
5

Ich versuche backgroundColor Eigenschaft der UILabel-Klasse zu animieren und bisher nicht erfolgreich. Hier ist der Ausschnitt aus meinem CodeWas ist eigentlich in UILabel animierbar?

-(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 

fand ich einige Behauptungen, dass einige UILabel Eigenschaften nicht animierbar sind, aber ich konnte nicht diese Behauptung untermauern durch das Lesen von Apple docs. Ich habe mich gefragt, ob jemand dieses Problem aufklären kann.

+1

Gute Frage. Die meiste Zeit versuche ich nur zu wissen, ob es animierbar ist ... – gcamp

Antwort

4

Unter "this page from the View Programming Guide For iOS" werden in "Tabelle 1-2 Animierbare Eigenschaften" alle animierbaren Eigenschaften von UIViews aufgeführt. Es enthält nicht backgroundColor.

Aber auf der UIView Klassenreferenz unter der Eigenschaft background heißt es:

Diskussion
Änderungen dieser Eigenschaft kann animiert werden. Der Standardwert ist Null.

So ist es nicht klar, warum die Hintergrundfarbe des UILabels nicht animiert.

Die Problemumgehung, die ich in der Vergangenheit verwendet habe, ist die Verwendung eines CATextLayer anstelle eines UILabel.

+0

Funktioniert nicht in 3.1.3 – bioffe

+0

Versuchen Sie diese beiden anderen Problemumgehungen in [dieser Frage] (http://stackoverflow.com/questions/2426614/how- animieren-die-Textfarbe-Eigenschaft-eines-Uilabel). Diese sollten in früheren Betriebssystemversionen funktionieren. – Anna

+0

@aBitObvvious CATextLayer verfügt nicht über Funktionen zur vertikalen Ausrichtung (in iOS) und rendert Text oben auf der Oberfläche (UILabel rendert in der Mitte). Ich gebe auf :( – bioffe