Как тонировать прозрачное изображение PNG в iPhone?

Я знаю, что можно тонировать прямоугольное изображение, рисуя поверх него CGContextFillRect и устанавливая режим наложения. Однако я не могу понять, как сделать оттенок на прозрачном изображении, таком как значок. Это должно быть возможно, так как SDK делает это на вкладках таким образом. Сможет ли кто-нибудь предоставить фрагмент?

ОБНОВЛЕНИЕ:

Много полезных предложений было дано по этой проблеме с тех пор, как я первоначально спросил. Обязательно прочитайте все ответы, чтобы выяснить, что подходит вам лучше всего.

ОБНОВЛЕНИЕ (30 апреля 2015 г.):

С iOS 7.0 теперь я могу просто сделать следующее, что удовлетворит потребности моего первоначального вопроса. Но если у вас есть более сложные случаи, проверьте все ответы.

UIImage *iconImage = [[UIImage imageNamed:@"myImageName"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];    
UIImageView *icon = [[UIImageView alloc] initWithImage:iconImage];
icon.tintColor = [UIColor redColor];
73
задан anna 30 April 2015 в 11:54
поделиться

2 ответа

UIImageView (или любое другое представление в этом отношении) имеет цвет фона, который является RGBA. Альфа в цвете может делать то, что вам нужно, не изобретая ничего нового.

2
ответ дан 24 November 2019 в 12:06
поделиться

После поисков лучшее решение, к которому я пришел, - это использовать комбинацию режима наложения и обтравочной маски для достижения раскрашивания / тонирования прозрачного PNG:

CGContextSetBlendMode (context, kCGBlendModeMultiply);

CGContextDrawImage(context, rect, myIconImage.CGImage);

CGContextClipToMask(context, rect, myIconImage.CGImage);

CGContextSetFillColorWithColor(context, tintColor);

CGContextFillRect(context, rect);
18
ответ дан 24 November 2019 в 12:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: