2010-08-03 67 views
0

我对图形或绘图没有任何了解,所以我认为这就是为什么我无法弄清楚要寻找什么来解决这个问题。在UITableViewCell中绘制一条实线

这是我在我的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

您可以尝试使用CGContextSetShouldAntialias()关闭抗锯齿功能。另外,0.25看起来像一条很细的线。将它设置为1.0可能会给你你想要的。

1

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

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

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

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];