2012-09-18 46 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视图和检查的背景颜色,可能是黑色或东西别人,重置它清晰的彩色然后检查你的结果,

相关问题