Как динамически создать изображение для UITableViewCell - PullRequest
0 голосов
/ 28 мая 2010

Я хочу динамически создать изображение для UITableViewCell, представляющего собой квадрат с числом в нем. Квадрат должен быть цветом (задан динамически) и содержать внутри него число в виде текста.

Я посмотрел документацию CGContextRef, но, похоже, не могу понять, как заставить изображение заполняться указанным определенным цветом.

Это то, что я пытался до сих пор.

-(UIImage*)createCellImageWithCount:(NSInteger)cellCount AndColour:(UIColor*)cellColour {

    CGFloat height = IMAGE_HEIGHT;
    CGFloat width = IMAGE_WIDTH;
    UIImage* inputImage;

    UIGraphicsBeginImageContext(CGSizeMake(width, height));
    CGContextRef context = UIGraphicsGetCurrentContext();
    UIGraphicsPushContext(context);

    // drawing code goes here
        // But I have no idea what.

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

    return outImage;
}

1 Ответ

3 голосов
/ 28 мая 2010

Перво-наперво: вам не нужно выдвигать графический контекст. Избавьтесь от линий UIGraphicsPushContext и UIGraphicsPopContext.

Во-вторых, как нарисовать то, что вы хотите:

-(UIImage*)createCellImageWithCount:(NSInteger)cellCount AndColour:(UIColor*)cellColour {

    CGFloat height = IMAGE_HEIGHT;
    CGFloat width = IMAGE_WIDTH;
    UIImage* inputImage;

    UIGraphicsBeginImageContext(CGSizeMake(width, height));
    CGContextRef context = UIGraphicsGetCurrentContext();

    [cellColour set];  // Set foreground and background color to your chosen color
    CGContextFillRect(context,CGRectMake(0,0,width,height));  // Fill in the background
    NSString* number = [NSString stringWithFormat:@"%i",cellCount];  // Turn the number into a string
    UIFont* font = [UIFont systemFontOfSize:12];  // Get a font to draw with.  Change 12 to whatever font size you want to use.
    CGSize size = [number sizeWithFont:font];  // Determine the size of the string you are about to draw
    CGFloat x = (width - size.width)/2;  // Center the string
    CGFloat y = (height - size.height)/2;
    [[UIColor blackColor] set];  // Set the color of the string drawing function
    [number drawAtPoint:CGPointMake(x,y) withFont:font];  // Draw the string

    UIImage* outputImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return outImage;
}
...