Bạn có thể đạt được điều này với một loại đơn giản trên 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
Đối tác dụng hiển thị ở trên, bạn sẽ vượt qua một cái gì đó giống như [UIColor colorWithWhite:0.0 alpha:0.3]
như tham số tintColor (thử nghiệm với giá trị alpha).
Công cụ tuyệt vời !!!! – hfossli
Không giống như một số giải pháp khác nổi xung quanh SO, điều này có tác dụng tốt đẹp của không tô màu toàn bộ rect. Sử dụng tốt UIRectFillUsingBlendMode() –
Câu trả lời hay, cảm ơn. – titaniumdecoy