Нарисуйте CGImage в UITableView - PullRequest
       46

Нарисуйте CGImage в UITableView

1 голос
/ 02 сентября 2011

Итак, у меня есть пользовательская ячейка, и мне нужно нарисовать все изображения как CGImage в tableView, но я не могу заставить его работать. Я создал тестовый проект и протестировал код с простыми представлениями. Все работало отлично, и когда я копировал тот же код в свою ячейку, он перестал работать. Вот код:

-(void)drawRect:(CGRect)rect {
    CGRect contentRect = self.contentView.bounds;
    CGFloat boundsX = contentRect.origin.x;

    UIImage *karmaImage = [UIImage imageNamed:@"karma.png"];
    [self drawImage:karmaImage withRect:CGRectMake(boundsX + 255, 16, 14, 14)];
}
-(void)drawImage:(UIImage *)image withRect:(CGRect)rect {
    CGImageRef imageRef = CGImageRetain(image.CGImage);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(context, 0, rect.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextDrawImage(context, rect, imageRef);
}

Какие-нибудь решения?

Ответы [ 3 ]

3 голосов
/ 02 сентября 2011

Apple рекомендует добавить свой пользовательский вид в contentView UITableViewCell вместо изменения самого UITableViewCell.См. TimeZoneCell для примера.

0 голосов
/ 02 сентября 2011

ОК, проблема была в том, что contentView ячейки с пользовательским фоновым цветом скрывал изображение. Вот правильный код:

-(void) drawRect:(CGRect)rect{
    [super drawRect:rect];
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [UIColor colorWithRed:(232.0/255.0) green:(232.0/255.0) blue:(232.0/255.0) alpha:1.0].CGColor);
    CGContextFillRect(context, rect);
    UIImage *karmaImg = [UIImage imageNamed:@"karma.png"]; 
    [self drawImage:karmaImg withContext:context atPoint:CGPointMake(boundsX + 255, 16)];
}


-(void)drawImage:(UIImage *)image withContext:(CGContextRef)context atPoint:(CGPoint)point {
    if(image) {
        CGContextDrawImage(context, CGRectMake(point.x, point.y, image.size.width, image.size.height), image.CGImage);
    } else {
        NSLog(@"Error: Image failed to load.");
    }
}
0 голосов
/ 02 сентября 2011

В вашем методе drawRect вы, вероятно, должны вызывать [super drawRect: rect];

...