我正在尝试将两个表格单元格的背景颜色从红色设置为原始颜色,白色。
以下代码就是我正在使用的代码。问题是它永远不会显示红色 - 它只是从(原始)白色到(动画到)白色的动画。即,如果我改变动画块中的颜色,它将以该颜色为动画。
[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) {
}];
那么,为什么当我的桌子背景出现时,我的细胞背景没有动画?
对于它的价值,我有很多其他链式动画我在这之后就在桌面视图上执行,但是在评论了这些动画后,我仍然有这个问题。
答案 0 :(得分:0)
因为单元格包含其他视图。您必须检查cell.contentView
,cell.accessoryView
和cell.backgroundView
的颜色。如果所有这些都是[UIColor clearColor]
,则可以为cell.backgroundColor
设置动画。
答案 1 :(得分:0)
看起来@Jason Coco是对的。我做不到(干净而迅速):
来自Apple:
注意:如果要更改单元格的背景颜色(通过设置) 通过backgroundColor属性的单元格的背景颜色 由UIView声明)你必须在 tableView:willDisplayCell:forRowAtIndexPath:委托的方法 而不是在tableView:cellForRowAtIndexPath:数据源。 在组样式表视图中更改单元格的背景颜色 在iOS 3.0中有效,与以前的版本不同 操作系统。它现在影响圆形内部的区域 矩形而不是它之外的区域。 Reference
因此,如果我真的想要设置一些变量,请在桌面上调用reloadData
或类似的东西。