iphone - 设置背景视图时在UITableViewCell中画一条线

时间:2013-04-24 09:42:32

标签: iphone ios uitableview drawing drawrect

我写了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;

有什么问题?背景视图如何隐藏线? 请帮忙

3 个答案:

答案 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)

当你已经绘制了背景时,你不能再为那个单元格设置背景颜色或图像。它覆盖你绘制的内容。