【问题标题】:Is UILabel's backgroundColor not animatable?UILabel 的 backgroundColor 不是可动画的吗?
【发布时间】:2011-06-22 15:49:26
【问题描述】:

我有一个gridView,我用来显示几个GridViewCell : UIView。 GidViewCell 给自己添加了一个 UILabel 并附加了一个UITapGestureRecognizer 给自己。

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[self addGestureRecognizer:gestureRecognizer];
[gestureRecognizer release];

在tapped:我想播放一些动画,包括改变标签的背景颜色

- (void) tapped:(id)sender {
    [UIView animateWithDuration:1.0
                          delay:0
                        options:(UIViewAnimationOptionAllowUserInteraction)
                     animations:^{ 
                         [(UILabel *)[[self subviews] objectAtIndex:0] setBackgroundColor:[UIColor blueColor]];
                     }  
                     completion:^(BOOL finished){
                         [(UILabel *)[[self subviews] objectAtIndex:0] setBackgroundColor:[UIColor whiteColor]];
                     }
     ];     
[self.delegate didSelectGridViewCell:self];
}

但标签只是在眨眼之间闪烁蓝色——如果有的话。 如果我使用相同的代码但调整标签的 alpha 而不是背景颜色,一切都会按预期工作。

Apple's docs 将 backgroundColor 列为动画。 是吗?我做错了吗?

【问题讨论】:

  • @bioffe 因为这不是 iPhone 特有的问题,我想说,[ios] 会是更好的标签
  • 是的,[ios] 是更好的标签。谢谢你。顺便说一句,我的 UILabel 的背景不会使用此解决方案进行动画处理。将 CATextLayer 添加到 UILabel.layer 时,我的运气要好得多。
  • 试试这个,不需要做所有这些:stackoverflow.com/a/20892927/189924
  • @strange,你不需要在一个 3 岁的问题上提高噪音水平并接受答案。
  • @vikingosegundo SDK 在 3 年内发生了变化,这是一个很受欢迎的问题。我在寻找解决方案时登陆页面并找到了一个非常想分享的解决方案。我推荐的方法更干净,更容易,不需要上述技巧(不尊重您的回答)。如果冒犯了您,我们深表歉意。

标签: objective-c ios cocoa-touch uianimation


【解决方案1】:

我自己从未尝试过,但我知道有人尝试过。我不知道这是文档还是代码中的错误。我假设后者是因为UILabel 继承自UIView,而且我确信您可以为UIView 的背景设置动画。解决方法显然是深入到底层CALayer 并在那里设置背景颜色。

【讨论】:

  • 有效! [[(UILabel *)[[self subviews] objectAtIndex:0] layer] setBackgroundColor:[UIColor blueColor].CGColor];
  • @vikingosegundo:只是为了可读性,没有必要将第一个子视图转换为 UILabel。所有 UIView 都有一个带有背景颜色的图层,您可以设置动画效果。更好的是,存储对标签的引用,而不是依赖它作为您正在使用的视图的第一个子视图。
  • 使用旧编译器,如果不强制转换,您会收到难看的警告。
猜你喜欢
  • 2020-04-06
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多