2013-10-10 1 views
0

Je voudrais changer la couleur d'une image que j'ai placée comme un bouton dans mon navBar. Le code que j'utilise pour créer l'image/le bouton est:Changer la couleur du bouton 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]; 

Si je voulais changer l'image en rouge (elle est actuellement grise). Comment ferais-je cela? Merci!

Répondre

2

c'est la méthode qui aidera à changer la couleur de votre image, vous devez passer l'image et la couleur que vos variables d'entrée et il retournera l'image de sortie

-(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; 
} 

et est l'exemple ici comment vous pouvez appeler cette méthode

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

Essayez une propriété tintColor de classe UIBarButtonItem.