Iphone drawRect不';t反映对图层所做的更改
我使用的Iphone drawRect不';t反映对图层所做的更改,iphone,objective-c,ios,cocoa-touch,Iphone,Objective C,Ios,Cocoa Touch,我使用的UITableView有一个自定义的UITableView单元格。此自定义单元格有一个子视图(UIView子类)。我使用自定义UIView子类的drawRect来放置单元格显示的所有文本 在drawRect(属于UIView子类)中,我执行以下操作 /* // This piece of code is called when setNeedsDisplay is called */ - (void)drawRect:(CGRect)rect { self.layer.corn
UITableView
有一个自定义的UITableView单元格
。此自定义单元格有一个子视图(UIView子类)。我使用自定义UIView子类的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;
}
然而,我的自定义单元格是这样一个黑色正方形
但是如果我选择了行,我确实看到了预期的行为。如下图所示
发生了什么事?尝试使用禁用单元格的选择突出显示
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
在
UIView
初始化过程中(覆盖drawRect
的初始化过程中,尝试设置self.layer.masksToBounds=YES
和(可能)self.opaque=NO
。(请参阅)您的drawRect:
方法不绘制任何内容;放在那里的代码属于initWithFrame:
实现
您应该在初始值设定项中操作层配置;在drawRect:
中,您应该根据视图的状态调用CGContextRef
的函数。例如,要绘制一些文本,可以使用CGContextShowTextAtPoint
,要绘制一些线条,可以使用CGContextAddLineToPoint
,依此类推
有关
drawRect:
与UIView的CALayer
之间关系的信息,请参阅。您犯了一个错误:
请转到UItableViewCell中的视图,检查背景颜色,它可能是黑色或其他颜色,将其重置为透明颜色,然后检查结果,这是否意味着,如果我没有在drawRect中绘制任何内容,我在initWithFrame中所做的初始化没有显示?@GarryO如果你没有在drawRect:
中绘制任何东西,你应该删除该方法;否则,矩形将保持黑色。