在 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 上绘制垂直分隔符的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 7 iOS 9 UITableViewCell 分隔符插入问题
自定义 UITableViewCell 垂直布局约束导致错误