iPhone UIView заменяет цвет изображения программно, как в Photoshop или Illustrator
У меня есть набор графики, который я хотел бы использовать в своих приложениях. Это кнопки и изображения с прозрачностью. Вместо того, чтобы иметь десятки жестко запрограммированных изображений кнопок, я хотел бы иметь одно изображение кнопки и иметь возможность назначать ему цвет динамически, например, панель навигации и ее оттенок.
Можно ли заменить / сместить оттенок UIView?
Другой вариант: я знаю, что если я наложу прозрачное изображение поверх другого UIView, то я могу изменить цвет фона, и два изображения будут смешиваться вместе. Но прозрачные регионы приобретут оттенок фона.
Есть ли способ сохранить прозрачные области прозрачными, смешивая два изображения вместе? Я слышал, что есть обтравочные маски, но никогда не работал с ними.
Спасибо!
Обновить:
Это должно работать, но возвращает ноль изображения, я видел, как кто-то еще сообщил о той же проблеме. Может быть, это будет работать в будущем
-(void)doHueAdjustFilter
{
//does not work, returns nil image
CIImage* inputImage = [CIImage imageWithCGImage:[[UIImage imageNamed:@"button.jpg"]CGImage]];
CIFilter *myFilter;
NSDictionary *myFilterAttributes;
myFilter = [CIFilter filterWithName:@"CIHueAdjust"];
[myFilter setDefaults];
myFilterAttributes = [myFilter attributes];
[myFilterAttributes setValue:inputImage forKey:@"inputImage"];
[myFilterAttributes setValue:[NSNumber numberWithFloat:0.9] forKey:@"inputAngle"];
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *ciimage = [myFilter outputImage];
CGImageRef cgimg = [context createCGImage:ciimage fromRect:[ciimage extent]];
UIImage *uimage = [UIImage imageWithCGImage:cgimg scale:1.0f orientation:UIImageOrientationUp];
[caduceusImageView setImage:uimage];
CGImageRelease(cgimg);
}