Ниже приведен пример ES6 того, как вы можете получить доступ к свойству объекта, используя имя свойства, которое было динамически сгенерировано путем объединения двух строк.
var suffix = " name";
var person = {
["first" + suffix]: "Nicholas",
["last" + suffix]: "Zakas"
};
console.log(person["first name"]); // "Nicholas"
console.log(person["last name"]); // "Zakas"
Это называется именами вычисленных свойств
Свойство 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)
})
Надеюсь, это поможет вам. Дайте мне знать, если у вас все еще есть проблемы.
попробуйте
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()
}
TextColor не должен быть анимируемым в документации, поэтому вы должны выполнить приведенный ниже анимационный код.
Причина :
Причина, по которой textColor не является анимируемым, заключается в том, что UILabel использует обычный CALayer вместо CATextLayer. поэтому у вас есть две опции
blockquote>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()