2013-04-24 22 views
1

我已經寫了如下的drawRect。iphone - 在設置背景視圖時在UITableViewCell中繪製一條線

-(void)drawRect:(CGRect)rect 
{ 
    [super drawRect:rect]; 
    CGContextRef cxt = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(cxt, 2.0); 
    CGContextSetStrokeColorWithColor(cxt, [UIColor redColor].CGColor); 
    CGContextMoveToPoint(cxt, 250.0 , 0.0); 
    CGContextAddLineToPoint(cxt, 250.0, 50.0); 
    CGContextStrokePath(cxt); 
} 

它畫紅線。但是當我設置背景視圖到單元格行消失。我的觀點如下。

UIView *view = [[UIView alloc] initWithFrame:cell.frame]; 
     view.backgroundColor = [UIColor grayColor]; 
    cell.backgroundView = view; 

什麼問題?背景視圖如何隱藏線條? 請幫忙

回答

1

我想你是在UITableViewCell

您不應該覆蓋細胞本身的drawRect。請將您的繪圖代碼放在自定義backgroundView中,或放入contentView層次結構中的自定義視圖中。 (取決於你的計劃的結果,很可能backgroundView是您正確的)

線消失了,因爲backgroundView是TableViewCell的子視圖,所以它是細胞本身的頂部。 (你可以看到這一點,如果你使用[UIColor colorWithWhite:0.0 alpha:0.5]爲您backgroundView的的backgroundColor。)上有一個UITableViewCell許多看法,它看起來有點像這樣:

UITableViewCell 
    > BackgroundView 
    > (EditControl) 
    > ContentView 
    > (AccessoryView) 
+0

K但作爲名稱建議背景它應該在底部。現在我得到了。謝謝 – Durgaprasad 2013-04-24 09:58:53

+0

它在底部。它的第一個子視圖。但子視圖不能低於自己的超視圖 - 這項工作應該如何,) – calimarkus 2013-04-24 10:02:07

0

與jaydee3,你不應該覆蓋的UITableViewCell的drawRect同意,而不是讓你的自定義視圖類從UIView延伸,擴展drawRect那裏,並做所有的框架和着色的事情,然後設置該視圖的一個實例作爲你的單元格背景視圖,它更好的方法

0

當你已經繪製的背景,你不能爲該單元格設置背景顏色或圖像。它覆蓋你繪製的內容。

相關問題