UIView.animateWithDuration(self.fadeTime, delay: 0,
options: UIViewAnimationOptions.AllowUserInteraction,
animations: { [weak self] () -> Void in
var randomIndex = Int(arc4random_uniform(UInt32(CONSTANTS.MainColorScheme.count)))
self?.startButton.titleLabel!.textColor = CONSTANTS.MainColorScheme[randomIndex]
}) { (stuff Bool) -> Void in
}
这似乎不起作用......只是"跳跃"到下一个颜色。它并没有褪色。
但是,如果我对self.view.backgroundColor
应用相同的方法,我的代码就可以了。
有替代方案吗?
答案 0 :(得分:3)
LOADING PROGRAM VERSION 16.5-0
EXECUTION STARTED
YOU ARE MODIFYING EXISTING PROFILE: USR
CONFIRM COMMAND EXECUTION: Y/N ? Y
COMMAND EXECUTED
不支持动画。但您可以为UILabel.textColor
设置动画:
<强>夫特强>:
CATextLayer
目标C :
let textLayer = CATextLayer()
textLayer.string = "Your text"
textLayer.foregroundColor = yourFirstColor
textLayer.frame = yourButton.bounds
yourButton.layer.addSublayer(textLayer)
UIView.animateWithDuration(1) {
textLayer.foregroundColor = yourSecondColor
}
答案 1 :(得分:1)
实际上,UIView.animateWithDuration
将与UILabel backgroundColor
一起使用,而对于textColor
则不会,因为颜色不会使用UIView动画制作动画。那么,如何实现?
解决方案1:
您可以转到CATextLayer
而不是UILabel
,然后为颜色设置动画。对于Objective-C,您可以参考 - iPad: Animate UILabels color changing
解决方案2:
您可以使用NSTimer
并在时间过后减少UILabel
alpha
解决方案3:
或者只是你可以用UIView.transitionWithView
答案 2 :(得分:0)
试试这个..
UIView.transitionWithView(YOURLABEL, duration: 0.325, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: {
// animation...
}, completion: { (fininshed: Bool) -> () in
// completion...
})
同时检查其他语法here
干杯! :)