Как цветное заполнение черного и прозрачного изображения в iOS?

Например, на панели инструментов iOS вы перетаскиваете свой собственный .png, который непрозрачен черным и прозрачным, и он автоматически добавляет синий блеск iOS.

Тем не менее, я хотел бы знать, как сделать это самостоятельно, но только сплошные цвета сделают.

Например, если у вас есть это изображение: Example

Что бы вы сделали, чтобы сделать весь цельный, розовый, синий или серый? Я хочу сократить количество версий .png Я сохраняю в своем приложении, раскрашивая их кодом.

Спасибо!

Ответ 1

Это должно сделать это за вас:

- (UIImage *)colorImage:(UIImage *)origImage withColor:(UIColor *)color
{
    UIGraphicsBeginImageContextWithOptions(origImage.size, YES, 0);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, (CGRect){ {0,0}, origImage.size} );

    CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, origImage.size.height);
    CGContextConcatCTM(context, flipVertical);
    CGContextDrawImage(context, (CGRect){ pt, origImage.size }, [origImage CGImage]);

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

    return image;
}

Ответ 2

Как и в iOS 7, вы можете теперь цвет черный (оттенки серого)/прозрачные изображения одним и тем же цветом

UIImage *image = [UIImage imageNamed:@"myImage.png"];
UIImageView *imageView = [[UIImageView alloc]initWithImage:[image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]];
imageView.tintColor = [UIColor redColor];