UIView.animate не анимация - PullRequest
       29

UIView.animate не анимация

2 голосов
/ 24 марта 2019

Я пытаюсь анимировать изменения textColor UILabel с помощью UIView.animate.Тем не менее, ничего не меняется, когда я пытаюсь использовать UIView.Вот мой код:

titleLabel.textColor = UIColor(red: 104/250, green: 155/250, blue: 121/250, alpha: 1)
UIView.animate(withDuration: 1.0, animations: {
    self.titleLabel.textColor = UIColor(red:206/255, green: 206/255, blue: 206/255, alpha: 1.0)

Я ожидаю, что цвет метки изменится на зеленоватый, а затем снова станет серым, как прежде.Заранее спасибо за помощь!

Ответы [ 3 ]

6 голосов
/ 24 марта 2019

Свойство textColor не указано как анимируемое в документах Apple для разработчиков, поэтому я не думаю, что вы можете сделать это с помощью простого блока UIView animations.

Вы можете использовать UIView transition вместо.

Код:

UIView.transition(with: self.titleLabel, duration: 1.0, options: .transitionCrossDissolve, animations: {
            self.titleLabel.textColor = UIColor(red: 104/250, green: 155/250, blue: 121/250, alpha: 1)
        }, completion: { _ in
            self.titleLabel.textColor = UIColor(red:206/255, green: 206/255, blue: 206/255, alpha: 1.0)
        })

Надеюсь, это поможет вам. Дайте мне знать, если у вас все еще есть проблемы.

0 голосов
/ 24 марта 2019

TextColor не должен быть анимируемым в документации, поэтому вы должны выполнить приведенный ниже анимационный код.

Причина :

Причиной того, что textColor не является анимируемым, является то, что UILabel использует обычный CALayer вместо CATextLayer. так что у вас есть два варианта

  1. выполнить анимацию на CATextLayer
  2. Добавьте пользовательский слой анимации, как показано ниже в коде.
let changeColor = CATransition() 

changeColor.duration = 1

CATransaction.begin()

CATransaction.setCompletionBlock {
self.titleLabel.layer.add(changeColor, forKey: nil)
self.titleLabel.textColor = UIColor(red:206/255, green: 206/255, blue: 206/255, alpha: 1.0) }

titleLabel.textColor = UIColor(red: 104.0/255.0, green: 155.0/255.0, blue: 121.0/255.0, alpha: 1.0)

CATransaction.commit()
0 голосов
/ 24 марта 2019

1001 * попробовать *

 UIView.animate(withDuration: 1.0, animations: {
        self.titleLabel.textColor = UIColor(red:206/255, green: 206/255, blue: 206/255, alpha: 1.0)
        self.view.layoutIfNeeded()
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...