2010-10-25 4 views
5

Я пытаюсь анимировать backgroundColor объект класса UILabel и пока не увенчался успехом. Вот фрагмент моего кодаЧто на самом деле аниматируется в 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 

Я нашел некоторые утверждения, что некоторые свойства UILabel не являются анимируемыми, но я не мог обосновать это утверждение, прочитав Apple, документы. Мне было интересно, может ли кто-нибудь пролить свет на эту проблему.

+1

Хороший вопрос. Большую часть времени я просто пытаюсь узнать, является ли это анимативным ... – gcamp

ответ

4

В this page from the View Programming Guide For iOS, «Таблица 1-2 Анимационные свойства», предположительно, перечисляет все анимационные свойства UIViews. Он не включает backgroundColor.

Но на UIView класса Reference, по собственности BackgroundColor он говорит:

Обсуждение
Изменения этого свойства могут быть анимированными. По умолчанию используется значение nil.

Так что непонятно, почему backgroundColor UILabel не оживляет.

Обходной путь, который я использовал в прошлом, заключается в использовании CATextLayer вместо UILabel.

+0

Не работает в 3.1.3 – bioffe

+0

Попробуйте эти два других метода обхода в [этот вопрос] (http://stackoverflow.com/questions/2426614/how- к-одушевленных-The-TextColor-свойство-оф-ан-UILabel). Они должны работать в более ранних версиях ОС. – Anna

+0

@aBitObvious CATextLayer не имеет средств вертикального выравнивания (в iOS) и отображает текст в верхней части его поверхности (UILabel отображает в центре). Я отказываюсь :( – bioffe

0

Если вы хотите, чтобы оживить цвет этикетки (включая фон), вы можете сделать что-то вроде этого:

https://stackoverflow.com/a/20892927/189924

Это не включает слоев или с использованием нескольких видов.

Смежные вопросы