我正在尝试使用UIView.animate为UILabel textColor更改设置动画。但是,当我尝试使用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)
我希望标签的颜色变为绿色,然后再变回以前的灰色。预先感谢您的帮助!
答案 0 :(得分:6)
在Apple开发人员文档中没有将textColor
属性指定为可动画设置,因此我认为您不能使用简单的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)
})
我希望它将对您有所帮助。让我知道您是否还有任何问题。
答案 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()
}
答案 2 :(得分:0)
TextColor在文档中不应设置动画,因此您必须执行以下动画代码。
原因:
textColor无法设置动画的原因是UILabel使用常规的CALayer而不是CATextLayer。所以您有两个选择
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()