把圖片直接渲染成相應的顏色(此方法我是定義在UIImage的類別中的)
/**
把UIImage對象渲染成相應的顏色
@param color 顏色
@return UIImage對象
*/
- (UIImage *)tintColor:(UIColor *)color
{
UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0, self.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextSetBlendMode(context, kCGBlendModeNormal);
CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
CGContextClipToMask(context, rect, self.CGImage);
[color setFill];
CGContextFillRect(context, rect);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
最開始耘斩,我是使用另外一種方式將圖片顯示成需求顏色的坞笙,如下:
//下面只是創(chuàng)建可以一個ImageView薛夜,在上面顯示一張圖片,需求是將圖片顯示成orange顏色
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
imageView.center = self.view.center;
//***需要設置imageView的'tintColor'屬性為最終渲染顏色
imageView.tintColor = [UIColor orangeColor];
[self.view addSubview:imageView];
//對于image來說,也需要設置一個相應的屬性才能最終顯示成需求顏色
//即'imageWithRenderingMode:'方法
UIImage *image = [UIImage imageNamed:@"ic_contact_list_hint"];
image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
//設置imageView的'image'屬性即可
imageView.image = image;
個人看來螟蝙,還是直接用第一種方法來的更加直觀一些场斑,也不需要設置那么多的屬性奴迅,比較方便脖隶,當然具體的區(qū)別和適用場景沒有研究過块仆,還請大家多指點庄敛。