2014-02-18 97 views
0

我想在我的自定义UITableViewCell中绘制自定义分隔符。iOS 7自定义分隔符不会模仿默认的分隔符行为。

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

我的自定义UITableViewCell身高是60

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

我有可能把我分离器y59的:

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

但这种行为是不理想的,因为当我选择一排,我想在前面的细胞消失的分离,这只是发生在y60,这是我的细胞的高度。

回答

0

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

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

为了解决这个问题,你必须在单元格边界内绘制分隔符。

我真的不明白你为什么要在先前的细胞(我想你指的是最后选择的小区)消失,但你可以通过在自定义的UITableViewCell子类覆盖setHighlighted:animated:setSelected:animated:实现这一目标的分离?

+0

我不希望最后选定的单元格的分隔符消失,我希望直接位于当前选定的单元格分隔符上方的单元格消失。它与默认分隔符相似,当您选择一个单元格时,您不会在其上方的单元格中看到分隔符。 – Kingsley

+0

嗯,在这种情况下..如何在tableView顶部手动绘制分隔符?这只是一个想法..不知道它是否实际或不,但你会更容易控制他们的外观等 – liamnichols

+0

这似乎很难处理,我想可能有一个更简单的解决方案。 – Kingsley