在块动画中动画UITableViewCell的backgroundColor

时间:2012-06-11 16:26:18

标签: ios animation uitableview block uibackgroundcolor

我正在尝试将两个表格单元格的背景颜色从红色设置为原始颜色,白色。

以下代码就是我正在使用的代码。问题是它永远不会显示红色 - 它只是从(原始)白色到(动画到)白色的动画。即,如果我改变动画块中的颜色,它将以该颜色为动画。

[table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]].backgroundColor = [UIColor redColor];
[table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]].backgroundColor = [UIColor redColor];

[UIView animateWithDuration:0.8 delay:0.2 options:UIViewAnimationOptionCurveEaseInOut animations:^{
    [table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]].backgroundColor = [UIColor whiteColor];
    [table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]].backgroundColor = [UIColor whiteColor];
}
completion:^(BOOL finished) {

}];

以下代码按表格的背景预期工作,但这不是我想要的:

table.backgroundColor = [UIColor redColor];

[UIView animateWithDuration:0.8 delay:0.2 options:UIViewAnimationOptionCurveEaseInOut animations:^{
    table.backgroundColor = [UIColor clearColor];
}
completion:^(BOOL finished) {

}];

那么,为什么当我的桌子背景出现时,我的细胞背景没有动画?

对于它的价值,我有很多其他链式动画我在这之后就在桌面视图上执行,但是在评论了这些动画后,我仍然有这个问题。

2 个答案:

答案 0 :(得分:0)

因为单元格包含其他视图。您必须检查cell.contentViewcell.accessoryViewcell.backgroundView的颜色。如果所有这些都是[UIColor clearColor],则可以为cell.backgroundColor设置动画。

答案 1 :(得分:0)

看起来@Jason Coco是对的。我做不到(干净而迅速):

来自Apple:

  

注意:如果要更改单元格的背景颜色(通过设置)   通过backgroundColor属性的单元格的背景颜色   由UIView声明)你必须在   tableView:willDisplayCell:forRowAtIndexPath:委托的方法   而不是在tableView:cellForRowAtIndexPath:数据源。   在组样式表视图中更改单元格的背景颜色   在iOS 3.0中有效,与以前的版本不同   操作系统。它现在影响圆形内部的区域   矩形而不是它之外的区域。   Reference

因此,如果我真的想要设置一些变量,请在桌面上调用reloadData或类似的东西。