Попытка анимировать фоновый цвет на uilabel для достижения эффекта «затухания», но он применяется мгновенно - PullRequest
4 голосов
/ 11 мая 2011

Я пытаюсь анимировать фоновый цвет на uilabel для достижения эффекта 'исчезновения'. Мой код выглядит так:

UILabel *lbl = ...
UIColor *oldCol = lbl.backgroundColor;
lbl.backgroundColor = [UIColor blueColor];
[UIView animateWithDuration:1.0 animations:^(void) {
    lbl.backgroundColor = oldCol;
}];

Но он мгновенно возвращается к исходному цвету. Я также попробовал следующее, чтобы изолировать проблему:

lbl.backgroundColor = [UIColor blueColor];
[UIView animateWithDuration:1.0 animations:^(void) {
    lbl.backgroundColor = [UIColor greenColor];
}];

И он мгновенно переходит в зеленый цвет. Есть идеи?

Ответы [ 2 ]

4 голосов
/ 11 мая 2011

Цвет фона UILabel не анимируемый.См. Как анимировать цвет фона UILabel? для возможного обходного пути.

0 голосов
/ 09 октября 2015

Сам фоновый цвет UILabel не является анимируемым, но фоновый цвет UILabel layer .Поэтому не устанавливайте основной цвет фона, иначе он будет скрывать цвет слоя.Просто сделайте основной фон прозрачным, чтобы слой просвечивал.

myLabel.backgroundColor = UIColor.clearColor()

Если вам нужно установить начальный цвет, вы можете сделать это следующим образом:

myLabel.layer.backgroundColor = UIColor.blueColor().CGColor

Затем, чтобы анимировать этот цвет на новый, вы можете сделать следующее:

UIView.animateWithDuration(1.0, animations: {

    self.myLabel.layer.backgroundColor = UIColor.redColor().CGColor
})

Этот ответ на языке Swift, но идея та же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...