我写了drawRect如下。
-(void)drawRect:(CGRect)rect
{
[super drawRect:rect];
CGContextRef cxt = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(cxt, 2.0);
CGContextSetStrokeColorWithColor(cxt, [UIColor redColor].CGColor);
CGContextMoveToPoint(cxt, 250.0 , 0.0);
CGContextAddLineToPoint(cxt, 250.0, 50.0);
CGContextStrokePath(cxt);
}
它绘制红线。但是当我将背景视图设置为细胞系消失时。我已将视图设置如下。
UIView *view = [[UIView alloc] initWithFrame:cell.frame];
view.backgroundColor = [UIColor grayColor];
cell.backgroundView = view;
有什么问题?背景视图如何隐藏线? 请帮忙
答案 0 :(得分:1)
我猜你在UITableViewCell
?
您不应该覆盖单元格本身的drawRect
。而是将绘图代码放在自定义backgroundView
中,或放在contentView
层次结构中的自定义视图中。 (取决于你的计划结果,可能backgroundView对你来说是正确的)
该行已消失,因为backgroundView
是TableViewCell的子视图,因此它位于单元格本身之上。 (如果你使用[UIColor colorWithWhite:0.0 alpha:0.5]
作为backgroundView的backgroundColor,你可以看到这一点。)UITableViewCell上有很多视图,看起来有点像这样:
UITableViewCell
> BackgroundView
> (EditControl)
> ContentView
> (AccessoryView)
答案 1 :(得分:0)
同意jaydee3你不应该覆盖UITableViewCell的drawRect,而是让你的自定义视图类从UIView扩展,在那里扩展drawRect并在那里做所有的框架和着色,然后将该视图的实例设置为你的单元格背景视图,它更好的方法
答案 2 :(得分:0)
当你已经绘制了背景时,你不能再为那个单元格设置背景颜色或图像。它覆盖你绘制的内容。