2012-09-18 61 views
4

我使用的UITableView有一個自定義UItableViewCell。這個自定義單元格有一個子視圖(一個UIView子類)。我使用自定義UIView子類的drawRect來放置單元格顯示的所有文本。drawRect不反映對圖層所做的更改

而且在drawRect(的UIView子類)我做了以下

/* 
// This piece of code is called when setNeedsDisplay is called 
*/ 
- (void)drawRect:(CGRect)rect 
{ 

    self.layer.cornerRadius = 10.0f; 
    self.layer.backgroundColor = [[UIColor orangeColor] CGColor]; 
    self.layer.borderColor = [[UIColor lightGrayColor] CGColor]; 
    self.layer.borderWidth = 3.0f; 
} 

但是我的自定義單元格是一個黑色的方形這樣

enter image description here

但我確實看到了預期的行爲如果我選擇該行。像圖所示

enter image description here

怎麼回事?

回答

0

嘗試設置self.layer.masksToBounds = YES和(也許)在你UIViewself.opaque = NO(就是drawRect被覆蓋)初始化禁用小區的選擇亮點。 (見this question

0

嘗試使用

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
+0

已嘗試過,不會工作:-( – GarryO

3

你的drawRect:方法不會畫任何東西;您放入的代碼屬於您的initWithFrame:實施。

您應該在初始化程序中操作圖層配置;在您的drawRect:中,您應根據視圖的狀態調用CGContextRef的函數。例如,要繪製一些文字,您可以使用CGContextShowTextAtPoint,繪製一些線條,您將使用CGContextAddLineToPoint,依此類推。

有關drawRect:與您的UIViewCALayer之間關係的信息,請參見this question

+0

那麼這是否意味着,如果我沒有在drawRect中繪製任何東西,我在initWithFrame中完成的初始化不會顯示? – GarryO

+0

@GarryO如果您沒有在drawRect中繪製任何東西:',你應該刪除該方法;否則,你的矩形將保持黑色。 – dasblinkenlight

0

你是做了一個錯誤:

請轉到側的UITableViewCell視圖和檢查的背景顏色,可能是黑色或東西別人,重置它清晰的彩色然後檢查你的結果,

相關問題