CGContextStrokeRect рисует только сторону прямоугольника - PullRequest
3 голосов
/ 05 декабря 2011

Мне нужно нарисовать прямоугольник, заполненный цветом, и его границу ... прямоугольник правильно заполнен цветом, но внешняя граница отрисована частично, нарисована только правая сторона прямоугольника!

Сгенерированный UIImage будет использоваться в imageView UITableViewCell.

- (UIImage *)legendItemWithColor:(UIColor *)color
{
    UIGraphicsBeginImageContext(self.view.frame.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGRect outside = CGRectMake(128, 128, 128, 128);
    CGRect legend = CGRectInset(outside, 1, 1);

    NSLog(@"Outside: %@", NSStringFromCGRect(outside));
    NSLog(@"Legend: %@", NSStringFromCGRect(legend));

    CGContextSetFillColorWithColor(context, color.CGColor);
    CGContextFillRect(context, legend);

    CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
    CGContextStrokeRect(context, outside);

    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    UIGraphicsPopContext();

    return img;
}

1 Ответ

2 голосов
/ 06 декабря 2011

Проблема заключается в том, что когда вы передаете self.view.frame.size в UIGraphicsBeginImageContext (), а затем используете нарисованный прямоугольник в массиве, он уменьшается и граница обфусцируется.Попробуйте передать только нужный вам размер, т.е. CGSizeMake (2 * 128 + 128 + 2,2 * 128 + 128 + 2).Тогда он показывает нормально

...