尝试在uilabel上设置backgroundcolor的动画以实现“淡入淡出”效果,但它立即适用

时间:2011-05-11 02:06:51

标签: iphone objective-c animation uiview

我正在尝试在uilabel上设置backgroundcolor的动画以实现“淡入淡出”效果。我的代码如下所示:

UILabel *lbl = ...
UIColor *oldCol = lbl.backgroundColor;
lbl.backgroundColor = [UIColor blueColor];
[UIView animateWithDuration:1.0 animations:^(void) {
    lbl.backgroundColor = oldCol;
}];

但它立即恢复原来的颜色。我也试过下面的问题来解决问题:

lbl.backgroundColor = [UIColor blueColor];
[UIView animateWithDuration:1.0 animations:^(void) {
    lbl.backgroundColor = [UIColor greenColor];
}];

它立即变为绿色。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

UILabel的背景颜色不可动画。有关可能的解决方法,请参阅How to animate the background color of a UILabel?

答案 1 :(得分:0)

UILabel背景颜色本身不可动画,但UILabel 图层背景颜色为。所以不要设置主背景颜色,否则会隐藏图层颜色。只需清除主背景,即可显示图层。

myLabel.backgroundColor = UIColor.clearColor()

如果您需要设置初始颜色,可以这样做:

myLabel.layer.backgroundColor = UIColor.blueColor().CGColor

然后,要将此颜色设置为新颜色,您可以执行以下操作:

UIView.animateWithDuration(1.0, animations: {

    self.myLabel.layer.backgroundColor = UIColor.redColor().CGColor
})

这个答案在Swift中,但想法是一样的。