在UITableViewCell中发出设置边框并在滚动时闪烁

时间:2016-03-12 12:38:17

标签: ios objective-c uitableview

我将顶部边框设置为UITableViewCell时遇到问题。我的要求是为所有单元格设置底部边框,并且只为第一个单元格设置顶部边框。我使用下面的代码来设置这个

if (indexPath.row == 0){
  CALayer* topCellBorder = [CALayer layer];
  topCellBorder.frame = CGRectMake(0, 1, CGRectGetWidth(cell.frame) , 0.5);
  topCellBorder.backgroundColor = [config getColour:@"theme.table-border.color"].CGColor;
  [cell.layer addSublayer:topCellBorder];
}
CALayer* bottomCellBorder = [CALayer layer];
bottomCellBorder.frame = CGRectMake(0, CGRectGetHeight(cell.frame) - 0.5, CGRectGetWidth(cell.frame)  , 0.5);
bottomCellBorder.backgroundColor = [config getColour:@"theme.table-border.color"].CGColor;
[cell.layer addSublayer:bottomCellBorder];

这首先工作正常,继承人截图 enter image description here

但滚动后,顶部边框消失了,并添加到下一个视图中,如下所示

enter image description here

此外,我看到滚动时边框闪烁。导致此行为的任何想法

1 个答案:

答案 0 :(得分:1)

正在重复使用单元格,因此旧边框仍然存在。滚动时,第一个单元格将重新用于其他单元格,并且它已经有topCellBorder

我建议您在awakeFromNib方法中为单元格添加单元格边框,只需在顶部和底部边框上打开和关闭。因此,您的单元格应该具有两个边框图层,但基于表格视图数据源中的indexPath.row,您只需显示和隐藏它们。