Se puede lograr esto con un simple categoría de UIImage:
@interface UIImage (Tint)
- (UIImage *)tintedImageUsingColor:(UIColor *)tintColor;
@end
@implementation UIImage (Tint)
- (UIImage *)tintedImageUsingColor:(UIColor *)tintColor {
UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);
CGRect drawRect = CGRectMake(0, 0, self.size.width, self.size.height);
[self drawInRect:drawRect];
[tintColor set];
UIRectFillUsingBlendMode(drawRect, kCGBlendModeSourceAtop);
UIImage *tintedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return tintedImage;
}
@end
Para el efecto se muestra más arriba, que le pasa algo así como el parámetro [UIColor colorWithWhite:0.0 alpha:0.3]
tintColor (experimento con el valor alfa).
¡Cosas geniales! – hfossli
A diferencia de otras soluciones que flotan alrededor de SO, esto tiene el bonito efecto de no colorear todo el rect. Buen uso de UIRectFillUsingBlendMode() –
Gran respuesta, gracias. – titaniumdecoy