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);

}

Ответы на вопрос(1)

Ваш ответ на вопрос