iOS 7 自定义分隔符不会模仿默认分隔符行为



>我正在尝试在我的自定义UITableViewCell中绘制一个自定义分隔符。

CALayer *border = [CALayer layer];
border.frame = CGRectMake(0, 60, 320, 1.0f);
border.backgroundColor = [UIColor blackColor].CGColor;
[self.layer addSublayer:border];

我的自定义UITableViewCell高度是60

出于某种原因,当我滚动到表格视图的底部时,所有分隔符都会正常显示,但是当我向上滚动表格时,顶部的表格单元格不会显示我的分隔符。

我可以使用59 y设置我的分隔符:

CALayer *border = [CALayer layer];
border.frame = CGRectMake(0, 59, 320, 1.0f);
border.backgroundColor = [UIColor blackColor].CGColor;
[self.layer addSublayer:border];

但是这种行为是不希望的,因为当我选择一行时,我希望前一个单元格上的分隔符消失,这仅在y 60时发生,这是我单元格的高度。

如果您的单元格高度为 60pts,则将 UIView 的 y 位置设置为 60pts 和 1pt heigh 会将其绘制到单元格边界之外。

这最初可能有效,因为单元格添加到表视图的顺序。即顶部单元格在第二个单元格向下添加后,因此在第二个单元格的顶部绘制的 1pt 分隔符...但是,当您向上滚动时,单元格将以不同的顺序添加回 tableView,从而导致分隔符被隐藏,因为它下面的单元格绘制在顶部。

要解决此问题,您必须在单元格边界内绘制分隔符。

我真的不明白为什么您希望上一个单元格上的分隔符消失(我假设您的意思是最后一个选定的单元格)但是您可以通过覆盖自定义 UITableViewCell 子类上的setHighlighted:animated:setSelected:animated:来实现这一点吗?

最新更新