在 UITableViewCell 上绘制垂直分隔符

Posted

技术标签:

【中文标题】在 UITableViewCell 上绘制垂直分隔符【英文标题】:Draw vertical separator on UITableViewCell 【发布时间】:2012-05-12 13:02:52 【问题描述】:

我有一个普通样式的 UITableView,它的单元格是 UITableViewCell 的子类。

在单元格子类中,我覆盖了 drawRect 以将此绘图代码放入(用于垂直分隔符):

CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(c, [[UIColor grayColor] CGColor]);
CGContextBeginPath(c);
CGContextMoveToPoint(c, self.frame.size.height + 0.5f, 0);
CGContextAddLineToPoint(c, self.frame.size.height + 0.5f, self.frame.size.height);
CGContextStrokePath(c);

效果很好。但是,我现在已将 tableview 样式更改为分组。这条线根本没有画出来。虽然设置断点显示drawRect方法被调用。

我想避免子类 UIView 只是为了画一条小线,特别是因为我已经对 tableview 单元格进行了子类化,我只想在单元格上绘图。那么为什么代码会突然停止在分组的 tableview 上工作呢?

【问题讨论】:

尝试重置模拟器n清理你的项目 【参考方案1】:

UITableViewCell 子类中覆盖drawRect 不是一个好主意。如果您不想设置自定义单元格的backgroundView,那么您可以添加简单的 1px 宽度的UIView

UIView* vertLineView = [[UIView alloc] initWithFrame:CGRectMake(80, 0, 1, 44)];
vertLineView.backgroundColor = [UIColor redColor];
[self.contentView addSubview:vertLineView];

【讨论】:

同意。或者您可以将带有自定义线条图像的 UIImageView 添加到单元格。 我认为我错了。在某些情况下,覆盖drawRect 可能是合理的。

以上是关于在 UITableViewCell 上绘制垂直分隔符的主要内容,如果未能解决你的问题,请参考以下文章

Win 32 API,用垂直分隔条绘制两个子窗口

Xcode 7 iOS 9 UITableViewCell 分隔符插入问题

自定义 UITableViewCell 垂直布局约束导致错误

为 tableview (UITableView) 绘制一个自定义单元格,更改颜色和分隔符颜色和宽度

uitableviewcell 分隔线未全宽显示

iOS)如何添加uitableviewcell的默认分隔符