我正在尝试在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];
}];
它立即变为绿色。有什么想法吗?
答案 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中,但想法是一样的。