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

时间:2014-02-18 20:06:06

标签: ios uitableview

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

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

我的自定义UITableViewCell身高为60

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

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

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

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

1 个答案:

答案 0 :(得分:0)

如果你的细胞高度是60pts,那么将UIView的y位置设置为60pts和1pt heigh将把它绘制到细胞边界之外。

这可能最初起作用,因为单元格被添加到tableView中的顺序..即顶部单元格在第二个单元格向下添加后因此在第二个单元格顶部绘制了1pt分隔符...但是当你向上滚动,单元格以不同的顺序被添加回tableView,导致分隔符被隐藏,因为它下方的单元格被绘制在顶部。

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

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