2013-09-18 4 views
5

У меня возникли проблемы с рисованием в методе drawRect моего пользовательского UITableViewCell. Вот код, я используюНевозможно нарисовать чертеж UITableViewCell

- (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

+0

Я согласен. Приложите все усилия, чтобы не использовать метод drawRect, если это необходимо, потому что это влияет на производительность работы. – user2277872

ответ

9

Вы, вероятно, не должны делать это в собственной DrawRect UITableViewCell в. Вместо этого создайте пользовательский UIView и добавьте его как подвью.

См. Также this answer.

15

Попробуйте установить backgroungcolor свойства прозрачного цвета

self.backgroundColor = [UIColor clearColor] 
+0

Спасибо, сэр! Спасло меня много неприятностей – Noob

1

Вы должны установить

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

Попробуйте установить backgroundColor из contentView свойства ясного цвета

self.contentView = [UIColor clearColor]; 
Смежные вопросы