2011-01-13 14 views

Antwort

49

Man könnte dies mit einer einfachen Kategorie auf UIImage erreichen:

@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 

Für die Wirkung oben gezeigt, können Sie so etwas wie [UIColor colorWithWhite:0.0 alpha:0.3] als tintColor Parameter (Experiment mit dem Alpha-Wert) passieren würden.

+0

Tolles Zeug !!!! – hfossli

+1

Im Gegensatz zu einigen anderen Lösungen, die um SO schweben, hat dies den schönen Effekt, das ganze Rect nicht zu färben. Gute Verwendung von UIRectFillUsingBlendMode() –

+0

Große Antwort, danke. – titaniumdecoy