在UITableViewCell中绘制一条实线

时间:2010-08-03 17:07:47

标签: iphone

我对图形或绘图一无所知所以我认为这就是为什么我无法弄清楚要解决这个问题的原因。

这是我在UITableViewCell的drawRect

中得到的
- (void)drawRect:(CGRect)rect {
    [super drawRect:rect];
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextSetRGBStrokeColor(ctx, 0.0, 0.0, 0.0, 1.0);
    CGContextSetLineWidth(ctx, 0.25);

    for (int i = 0; i < [columns count]; i++) {
        CGFloat f = [((NSNumber*) [columns objectAtIndex:i]) floatValue];
        CGContextMoveToPoint(ctx, f, 0);
        CGContextAddLineToPoint(ctx, f, self.bounds.size.height);
    }
    CGContextStrokePath(ctx);
}

我认为这应该是画一条黑线,但是这条线是灰色的,与背景中的东西混合在一起。如何绘制不受背景图像影响的实线?我已经尝试了所有混合模式的想法,也许有人会像混合模式一样,因为我不想要任何混合,但所有的绘制线都以某种方式与背景融合。

3 个答案:

答案 0 :(得分:3)

您可以尝试使用CGContextSetShouldAntialias()关闭抗锯齿功能。此外,0.25似乎是一个非常细的线。将其设置为1.0可能会为您提供所需的内容。

答案 1 :(得分:1)

两个问题: *你正在绘制一条0.25像素(或iPhone 4上的0.5像素)宽的黑线;抗锯齿将使这看起来是半透明的。尝试将线宽设置为1。 *如果f是整数,则线的中心在像素边界上对齐(您希望它在像素中心上)。尝试添加0.5f。

如果您想在iPhone 4上使用更细的线条,请检查self.layer.scale是否= 2,如果是,请将线宽设置为0.5并添加0.25f。

或者,设置填充颜色并调用CGContextFillRect(),这意味着您不必担心像素中心。

答案 2 :(得分:0)

UIView *line = [[UIView     alloc]initWithFrame:CGRectMake(100,0,1,44)];
line.backgroundColor = [UIColor     colorWithRed:244.0f/255.0f green:244.0f/255.0f     blue:244.0f/255.0f alpha:1];

[cell addSubview:line];