2010-08-03 64 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];