无法在UITableViewCell的drawRect中绘制

时间:2013-09-18 23:25:36

标签: ios objective-c uitableview core-graphics

我在使用自定义UITableViewCell的drawRect方法时遇到了麻烦。这是我正在使用的代码

- (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);
}

我已经调试过以确保所有数值都有意义并且看起来确实如此。无法真正找出为什么屏幕上没有任何内容。

对于它的价值,这也是一个在笔尖中定义的单元格。我正在构建iOS 7 sdk。

有什么想法吗?

tahnks

4 个答案:

答案 0 :(得分:15)

尝试将backgroungcolor属性设置为透明色

self.backgroundColor = [UIColor clearColor]

答案 1 :(得分:9)

你可能不应该在UITableViewCell自己的drawRect中这样做。而是创建一个自定义UIView并将其添加为子视图。

另见this answer

答案 2 :(得分:3)

你必须设置

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
       .....
       [cell setNeedsDisplay];
       return cell;
}

答案 3 :(得分:-2)

尝试设置@echo off :B echo Enter password: set /p password= if "%password%" == "Password WithASpace" goto :A if not "%password%" == "Password WithASpace" goto :C :C echo Incorrect password cls goto :B :A echo Correct password, unlocking secret FBI database. pause 属性的backgroundColor以清除颜色

contentView