drawRect不反映对图层所做的更改

时间:2012-09-18 16:21:24

标签: iphone objective-c ios cocoa-touch

我使用的UITableView有自定义UItableViewCell。这个自定义单元格有一个子视图(一个UIView子类)。我使用自定义UIView子类的drawRect来放置单元格要显示的所有文本。

drawRectUIView子类)中,我执行以下操作

/*
// 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

怎么回事?

4 个答案:

答案 0 :(得分:3)

您的drawRect:方法没有绘制任何内容;您放在那里的代码属于initWithFrame:实施。

您应该在初始化程序中操作图层配置;在drawRect:中,您应根据视图状态调用CGContextRef的函数。例如,要绘制一些文本,您可以使用CGContextShowTextAtPoint来绘制一些您将使用CGContextAddLineToPoint的行,依此类推。

有关drawRect:CALayer的{​​{1}}之间关系的信息,请参阅this question

答案 1 :(得分:0)

尝试使用

禁用单元格的选择突出显示
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

答案 2 :(得分:0)

尝试在self.layer.masksToBounds = YESself.opaque = NO被覆盖的)初始化期间设置UIView和(可能)drawRect。 (见this question

答案 3 :(得分:0)

你犯了一个错误:

请转到UItableViewCell旁边的视图,检查它可能是黑色或其他颜色的背景颜色,重置它以清除颜色然后检查结果,