2013-10-10 39 views
0

我想更改我在navBar中作为按钮放置的图像的颜色。我用来创建图像/按钮的代码是:更改UIImage按钮的颜色

UIImage *btnGoImage = [UIImage imageNamed:@"settings_cog.png"]; 
UIButton *btnGoPre = [UIButton buttonWithType:UIButtonTypeCustom]; 
btnGoPre.bounds = CGRectMake(0, 0, 30, 30); 
[btnGoPre setImage:btnGoImage forState:UIControlStateNormal]; 

[btnGoPre addTarget:self action:@selector(loginAction) 
forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *btnGo = [[UIBarButtonItem alloc] initWithCustomView:btnGoPre]; 

如果我想将图像更改为红色(当前为灰色)。我将如何做到这一点?谢谢!

回答

2

这是一个将有助于改变你的形象,你需要对图像和色彩传递作为输入变量的颜色的方法,它会返回输出图像

-(UIImage *)imageNamed:(NSString *)name withColor:(UIColor *)color 
{ 
    // load the image 
    UIImage *img = [UIImage imageNamed:name]; 

    // begin a new image context, to draw our colored image onto 
    UIGraphicsBeginImageContext(img.size); 

    // get a reference to that context we created 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    // set the fill color 
    [color setFill]; 

    // translate/flip the graphics context (for transforming from CG* coords to UI* coords 
    CGContextTranslateCTM(context, 0, img.size.height); 
    CGContextScaleCTM(context, 1.0, -1.0); 

    // set the blend mode to color burn, and the original image 
    CGContextSetBlendMode(context, kCGBlendModeColorBurn); 
    CGRect rect = CGRectMake(0, 0, img.size.width, img.size.height); 
    CGContextDrawImage(context, rect, img.CGImage); 

    // set a mask that matches the shape of the image, then draw (color burn) a colored rectangle 
    CGContextClipToMask(context, rect, img.CGImage); 
    CGContextAddRect(context, rect); 
    CGContextDrawPath(context,kCGPathFill); 

    // generate a new UIImage from the graphics context we drew onto 
    UIImage *coloredImg = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    //return the color-burned image 
    return coloredImg; 
} 

和这里的例子,如何你可以调用这个方法

yourImageView.image = [self imageNamed:@"yourImageName" withColor:[UIColor orangeColor]]; 
1

尝试一个UIBarButtonItem类的tintColor属性。