我不敢相信我在问经典的“我如何画线”问题,但它比这更复杂一些。
我有一个分组的 tableview,我已将它的 separatorColor 设置为清除。这将删除边框和分隔符。我在 UITableViewCell 上还有一个类别,用于在单元格周围绘制一些渐变。
我希望能够在同一类别中绘制行分隔符。这是我到目前为止所拥有的:
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
float y = height;
CGContextMoveToPoint(ctx, CGRectGetMinX(rect), y);
CGContextAddLineToPoint(ctx, CGRectGetMaxX(rect), y);
CGContextSetStrokeColorWithColor(ctx, color.CGColor);
CGContextSetLineWidth(ctx, width);
CGContextStrokePath(ctx);
CGContextRestoreGState(ctx);
这可行,但该行显示在 tableView 单元格后面。我希望它在单元格顶部可见。
我错过了什么?
谢谢!
编辑:截图
如果您仔细观察,您可以在边缘看到绿色像素。底部是完全可见的。
编辑 2:代码
- (void)drawRect:(CGRect)rect {
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
[self drawLineSeparator:self.contentView.frame];
}
- (void) drawLineSeparator:(CGRect)rect {
[self drawLineAtHeight:CGRectGetMaxY(rect)
rect:rect
color:[UIColor colorWithRed:0 green:1 blue:0 alpha:.7]
width:1];
}
- (void) drawLineAtHeight:(float)height rect:(CGRect)rect color:(UIColor *)color width:(float)width {
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
float y = height;
CGContextMoveToPoint(ctx, CGRectGetMinX(rect), y);
CGContextAddLineToPoint(ctx, CGRectGetMaxX(rect), y);
CGContextSetStrokeColorWithColor(ctx, color.CGColor);
CGContextSetLineWidth(ctx, width);
CGContextStrokePath(ctx);
CGContextRestoreGState(ctx);
}