我需要为偶数行设置白色背景,为奇数行设置黑色背景,我在想:
方法一:给单元格添加一个属性,表示呈现时单元格的位置,这样单元格就可以切换颜色,或者我返回单元格的时候,可以查看它的位置并切换它的颜色
- 这应该可以正常工作
- 删除/添加行时需要重新加载整个表
方法2:添加一个可拉伸的背景图片,有反复的黑白条纹,既然行高是固定的,那么就让它随着表格滚动
- 这听起来比方法 1 更聪明
- 如果表格视图很大,这可能需要有一个非常大的背景图像
有没有其他方法可以做到这一点?
谢谢!
我需要为偶数行设置白色背景,为奇数行设置黑色背景,我在想:
方法一:给单元格添加一个属性,表示呈现时单元格的位置,这样单元格就可以切换颜色,或者我返回单元格的时候,可以查看它的位置并切换它的颜色
方法2:添加一个可拉伸的背景图片,有反复的黑白条纹,既然行高是固定的,那么就让它随着表格滚动
有没有其他方法可以做到这一点?
谢谢!
为什么不通过检查行是奇数还是偶数来设置背景。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
........
if (indexPath.row % 2 == 0) //even
{
cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Black"]];
}
else
{
cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"White"]];
}
到目前为止,所有其他答案似乎都忽略了与插入和删除行相关的问题。
我认为最简单的方法是当您插入或删除一行时,重新加载插入/删除点下方的所有可见行。无需处理可见范围以下的行。
假设您有 100 行,并且您正在查看第 20-30 行。如您所说,偶数行是白色的。现在,如果在第 35 行插入/删除一行,则无需执行任何操作,因为所有受影响的行都在屏幕外。如果在第 25 行插入/删除一行,它将立即以正确的颜色显示。您现在需要重新加载第 26-30 行,以便它们使用正确的新颜色进行更新。如果在第 15 行插入/删除一行,则需要重新加载第 20-30 行(所有可见行)。
如果需要,您可以进行一些优化。例如,如果添加了两行(例如在 15 和 16 处,则无需执行任何操作。
[tableView indexPathsForVisibleRows]
基本算法是在插入/删除之后调用。如果路径在插入/删除的索引路径之后,则重新加载这些路径中的每一个。
是的,您可以检查 indexpathindexpath%3 == 0
并为方法 1 的单元格添加背景颜色,例如 cell.backroundcolor = [UIColor bluecolor];
并为方法2添加单元格的背景图像
cell.bakgroundView = [UIImageview alloc]inithWitImage:[UIImage imagenamed@"cellBG.png"]];