我有一个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列为动画。 是吗?我做错了吗?
答案 0 :(得分:11)
我自己从未尝试过,但我知道有人。我不知道这是文档或代码中的错误。我假设后者UILabel
继承自UIView
,我确信你能够为UIView
的背景设置动画。解决方法显然是深入到底层CALayer
并在那里设置背景颜色。