Agregar un tinte a una image

Estoy creando una aplicación que utiliza UIImagePickerController para presentar una camera al usuario con una superposition personalizada que incluye una de las dos grillas / patrones en la "vista" de la camera.

Las rejillas son files .png en un UIImageView que se agrega a la superposition, son bastante complejas, así que realmente me gustaría alejarme de dibujar la grilla en el código, a pesar de que esto presentaría una respuesta agradable y simple a mi pregunta.

Me gustaría poder ofrecer las rejillas en una variedad de colors. La solución obvia es crear más imágenes .png en diferentes colors, pero para cada color habría que tener cuatro imágenes separadas (regular y retina para cada una de las cuadrículas), de modo que rápidamente se sumrían a una gran cantidad de activos.

La solución que, creo, sería ideal, sería que creara las cuadrículas en blanco / gris y luego aplicara un tinte para colorearlo apropiadamente.

¿Es eso posible? ¿O tengo que search una solución alternativa?

Con agradecimiento a Ananth por haberme apuntado al iPhone – ¿Cómo se colorea una image?

He agregado este método a mi código como se sugiere en la pregunta, con la modificación en la respuesta de willc2:

 -(UIImage *)colorizeImage:(UIImage *)baseImage color:(UIColor *)theColor { UIGraphicsBeginImageContext(baseImage.size); CGContextRef ctx = UIGraphicsGetCurrentContext(); CGRect area = CGRectMake(0, 0, baseImage.size.width, baseImage.size.height); CGContextScaleCTM(ctx, 1, -1); CGContextTranslateCTM(ctx, 0, -area.size.height); CGContextSaveGState(ctx); CGContextClipToMask(ctx, area, baseImage.CGImage); [theColor set]; CGContextFillRect(ctx, area); CGContextRestoreGState(ctx); CGContextSetBlendMode(ctx, kCGBlendModeMultiply); CGContextDrawImage(ctx, area, baseImage.CGImage); UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; } 

… y estoy obteniendo exactamente lo que busco.