iosobjective-cuiimageuicolortintcolor

How can I change image tintColor


I'm receiving image from a server, then based on a color chosen by the user, the image color will be changed.

I tried the following :

_sketchImageView.image = [_sketchImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[_sketchImageView setTintColor:color];

i got the opposite of my goal (the white color outside UIImage is colored with the chosen color).

what is going wrong?

i need to do the same in this question,the provided solution doesn't solve my case. How can I change image tintColor in iOS and WatchKit


Solution

  • Try to generate new image for yourself

    UIImage *newImage = [_sketchImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
    UIGraphicsBeginImageContextWithOptions(image.size, NO, newImage.scale);
    [yourTintColor set];
    [newImage drawInRect:CGRectMake(0, 0, image.size.width, newImage.size.height)];
    newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    _sketchImageView.image = newImage;
    

    And use it.

    Good luck

    ======= UPDATE =======

    This solution will only change color of all pixel's image.

    Example: we have a book image: http://pngimg.com/upload/book_PNG2113.png

    enter image description here

    And after running above code (exp: TintColor is RED). We have:

    enter image description here

    SO: how your image is depends on how you designed it