2

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

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

[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) {

}];

那么,为什么当我的表格背景有动画时,我的单元格背景没有动画呢?

值得一提的是,在此之后,我在 table view 上执行了许多其他链接动画,但是在将这些动画注释掉之后,我仍然有这个问题。

4

2 回答 2

0

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

来自苹果:

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

因此,如果我真的想要,我必须设置一些变量,然后调用reloadDatatable 或类似的东西。

于 2012-06-11T17:40:00.153 回答
0

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

于 2012-06-11T16:37:48.513 回答