Can't draw in UITableViewCell's drawRect

2020-06-17 06:43发布

I'm having trouble drawing in the drawRect method of my custom UITableViewCell. Here is the code I am using

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx  = UIGraphicsGetCurrentContext();
    CGPoint origin    = _faceView.frame.origin;
    CGFloat width     = _faceView.frame.size.width;
    CGFloat height    = _faceView.frame.size.height;
    CGFloat border    = 2.0f;


    CGPoint startPt   = CGPointMake(origin.x + width/2, self.frame.size.height);
    CGContextBeginPath(ctx);
    CGContextMoveToPoint(ctx, startPt.x, startPt.y);

    CGPoint basePt    = CGPointMake(startPt.x, origin.y - height - border);
    CGContextAddLineToPoint(ctx, basePt.x, basePt.y);

    CGRect circleRect = CGRectMake(origin.x - border, origin.y - border, width + 2 * border, height + 2 * border);
    CGContextAddEllipseInRect(ctx, circleRect);

    UIColor *color = [UIColor redColor];
    CGContextSetFillColorWithColor(ctx, color.CGColor);
    CGContextSetStrokeColorWithColor(ctx, color.CGColor);
    CGContextSetLineWidth(ctx, 1.0f);

    CGContextDrawPath(ctx, kCGPathFillStroke);
}

I've debugged to make sure that all of the numeric values make sense and it appears that they do. Can't really find out why nothing is being drawn on screen.

For what its worth, this is a cell defined in a nib as well. And i'm building with the iOS 7 sdk.

Any ideas?

tahnks

4条回答
我命由我不由天
2楼-- · 2020-06-17 07:20

Try set backgroundColor of contentView property to clear color

self.contentView = [UIColor clearColor];
查看更多
你好瞎i
3楼-- · 2020-06-17 07:21

Try set backgroungcolor property to transparent color

self.backgroundColor = [UIColor clearColor]
查看更多
孤傲高冷的网名
4楼-- · 2020-06-17 07:37

You have to set

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
       .....
       [cell setNeedsDisplay];
       return cell;
}
查看更多
▲ chillily
5楼-- · 2020-06-17 07:38

You probably shouldn't do this in UITableViewCell's own drawRect. Instead, create a custom UIView and add it as a subview.

See also this answer.

查看更多
登录 后发表回答