Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone drawRect不';t反映对图层所做的更改_Iphone_Objective C_Ios_Cocoa Touch - Fatal编程技术网

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:
中绘制任何东西,你应该删除该方法;否则,矩形将保持黑色。