iPhone UIView reemplaza el color de la imagen mediante programación, como en Photoshop o Illustrator

Tengo un conjunto de gráficos que me gustaría reutilizar en mis aplicaciones. Son botones e imágenes con transparencia. En lugar de tener docenas de imágenes de botones codificadas, me encantaría tener una sola imagen de botón y poder asignarle un color dinámicamente, como la barra de navegación y su color de tinte.

Es posible reemplazar / cambiar el tono de una UIView?

Alternativamente: Sé que si superpongo una imagen transparente sobre otra UIView, entonces puedo cambiar el color de fondo y las dos imágenes se mezclarán. Pero las regiones transparentes tomarán el tono del fondo.

¿Hay alguna manera de mantener transparentes las regiones transparentes, mientras se mezclan las dos imágenes? Escuché que hay máscaras de recorte, pero nunca he trabajado con ellas.

¡Gracias

Actualizar

Esto debería funcionar, pero devuelve una imagen nula, he visto a alguien más informar el mismo problema. Tal vez esto funcione en el futuro

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

}

Respuestas a la pregunta(2)

Su respuesta a la pregunta