如何在Swift中动画(淡出)UILabel textColor?

时间:2015-07-28 06:48:12

标签: ios swift

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应用相同的方法,我的代码就可以了。

有替代方案吗?

3 个答案:

答案 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

来寻找“FadeIn - FadeOut”动画

答案 2 :(得分:0)

试试这个..

UIView.transitionWithView(YOURLABEL, duration: 0.325, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: {

    // animation...

}, completion: { (fininshed: Bool) -> () in

    // completion...

})

同时检查其他语法here

干杯! :)